【Android開発】TextViewのSpan(文字列の一部)に色を設定する方法を解説
この記事では、AndroidアプリでTextView内の特定の文字列(Span)に色を設定する方法を、実際のサンプルコードとともに解説します。SpannableStringとForegroundColorSpanを組み合わせれば、1つのTextViewの中でも部分的にテキストの色を変更できます。
手順1:Android Studioで新規プロジェクトを作成
Android Studioを起動し、メニューから「File」→「New Project」を選択します。必要な項目を入力して、新しいプロジェクトを作成してください。
手順2:レイアウトファイル(activity_main.xml)を編集する
res/layout/activity_main.xml に以下のコードを追加します。
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android" xmlns:tools="https://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <TextView android:id="@+id/textView" android:textSize="16sp" android:padding="12sp" android:textStyle="bold|italic" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true"/> </RelativeLayout>
ここでは、画面中央に配置されたTextViewを1つ定義しています。テキストサイズは16sp、スタイルは太字かつ斜体に設定しています。
手順3:MainActivity.java を実装する
src/MainActivity.java に以下のコードを記述します。
import android.graphics.Color;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.SpannableString;
import android.text.Spanned;
import android.text.style.ForegroundColorSpan;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = findViewById(R.id.textView);
String text = "I appreciate the prayer but I've already got God on my side";
SpannableString spannableString = new SpannableString(text);
ForegroundColorSpan foregroundColorSpanCyan = new ForegroundColorSpan(Color.CYAN);
ForegroundColorSpan foregroundColorSpanBlue = new ForegroundColorSpan(Color.BLUE);
ForegroundColorSpan foregroundColorSpanGreen = new ForegroundColorSpan(Color.GREEN);
spannableString.setSpan(foregroundColorSpanCyan, 3, 15, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
spannableString.setSpan(foregroundColorSpanBlue, 22, 31, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
spannableString.setSpan(foregroundColorSpanGreen, 38, 49, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
textView.setText(spannableString);
}
}コードのポイント
このサンプルの仕組みは以下の通りです。
- SpannableString: 文字列全体を保持しつつ、部分ごとに装飾を適用できるクラスです。
- ForegroundColorSpan: 指定した範囲の文字色を変更するスパンです。ここではシアン・ブルー・グリーンの3色を使用しています。
- setSpan(): 第1引数にスパン、第2・第3引数に適用範囲(開始位置と終了位置)、第4引数にフラグ(
SPAN_EXCLUSIVE_EXCLUSIVE)を指定します。
なお、新しいプロジェクトではサポートライブラリの代わりにAndroidXが使われるため、インポート文は androidx.appcompat.app.AppCompatActivity に読み替えてください。
手順4:AndroidManifest.xml を確認する
androidManifest.xml は以下のようになります。
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="https://schemas.android.com/apk/res/android" package="app.com.sample"> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
※今回のサンプルでは特別な権限は不要のため、READ_PHONE_STATEのパーミッション宣言は削除しても問題ありません。
アプリを実行して動作を確認しよう
それでは、アプリを実行してみましょう。実機のAndroidスマートフォンをPCに接続していることを前提としています。Android Studioでプロジェクトのアクティビティファイルを開き、ツールバーの「Run」アイコンをクリックしてください。接続したモバイルデバイスを選択すると、端末の画面に以下のように表示されます。

-
【Android開発】カラー整数(int)を16進数カラーコード文字列に変換する方法
Androidアプリ開発では、色情報がint型の整数値として扱われることが多く、これを「#FF5733」のような16進数のカラーコード文字列に変換したいケースがあります。本記事では、Integer.toHexString()メソッドを使ってカラー整数を16進文字列に変換する方法を、実際のサンプルプロジェクトとともにわかりやすく解説します。変換の仕組みAndroidでは、色はARGB形式(アルファ・赤・緑・青)の32ビット整数として表現されます。そのため、-16895234のような負の値も有効なカラー整数です。Integer.toHexString(int)で16進文字列に変換した後、先頭2桁は
-
【Android】エミュレータのIPアドレスを取得して表示する方法を解説
はじめにこの記事では、Androidアプリから端末(エミュレータ/実機)のIPアドレスを取得し、画面に表示する方法を、実際のサンプルコードとともにステップ形式で解説します。Wi-Fi接続情報を利用したシンプルな実装例なので、Android開発初心者の方にもわかりやすい内容となっています。手順1:新規プロジェクトの作成まず、Android Studioで新しいプロジェクトを作成します。メニューから「File」→「New Project」を選択し、必要な項目を入力してプロジェクトを作成してください。手順2:レイアウトファイル(activity_main.xml)の編集res/layout/acti