Android
 Computer >> コンピューター >  >> プログラミング >> Android

KotlinでAndroidのTextViewスパンに色を設定する方法を解説

本記事では、Kotlinを使用してAndroidアプリのTextViewスパン(文字列の一部)に色を設定する方法を、実際に動作するサンプルコードとともにわかりやすく解説します。

スパンの色設定で使用する主なクラス

  • SpannableString:文字列の全体または一部にスタイルを適用できるクラスです。通常のStringと異なり、範囲を指定して装飾を加えられます。
  • ForegroundColorSpan:指定した範囲の文字色を変更するためのスパンです。

実装手順

ステップ1:新規プロジェクトの作成

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:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_centerHorizontal="true"
      android:layout_marginTop="50dp"
      android:text="Tutorials Point"
      android:textAlignment="center"
      android:textColor="@android:color/holo_green_dark"
      android:textSize="32sp"
      android:textStyle="bold" />
   <TextView
      android:textAlignment="center"
      android:id="@+id/textView"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_centerInParent="true"
      android:textSize="24sp"
      android:textStyle="bold|italic" />
</RelativeLayout>

ステップ3:MainActivity.kt に処理を記述

src/MainActivity.kt に以下のコードを追加します。

import android.graphics.Color
import android.os.Bundle
import android.text.SpannableString
import android.text.Spanned
import android.text.style.ForegroundColorSpan
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity
class MainActivity : AppCompatActivity() {
   lateinit var textView:TextView
   override fun onCreate(savedInstanceState: Bundle?) {
      super.onCreate(savedInstanceState)
      setContentView(R.layout.activity_main)
      title = "KotlinApp"
      textView = findViewById(R.id.textView)
      val text = "I appreciate the prayer but I've already got God on my side"
      val spannableString = SpannableString(text)
      val foregroundColorSpanCyan = ForegroundColorSpan(Color.MAGENTA)
      val foregroundColorSpanBlue = ForegroundColorSpan(Color.RED)
      val foregroundColorSpanGreen = 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.text = spannableString
   }
}

コードのポイント:

  • SpannableString(text) で対象となる文字列をラップします。
  • ForegroundColorSpan(Color.MAGENTA) のように、適用したい色を持つスパンを生成します。
  • setSpan(スパン, 開始位置, 終了位置, フラグ) で色を適用する範囲を指定します。位置は0から始まるインデックスで指定します。
  • フラグには Spanned.SPAN_EXCLUSIVE_EXCLUSIVE を使用しています。これは、範囲の境界に後からテキストを挿入してもスパンが拡張されないことを意味します。
  • 最後に textView.text = spannableString を呼び出して、TextViewへ反映させます。

ステップ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.q11">
   <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>

アプリの実行と結果の確認

それでは、アプリケーションを実行してみましょう。ここでは、実機のAndroidスマートフォンがパソコンに接続されているものとして説明を進めます。Android Studioからアプリを実行するには、プロジェクト内のアクティビティファイルをいずれか開き、ツールバーのRunアイコンKotlinでAndroidのTextViewスパンに色を設定する方法を解説をクリックします。表示される候補の中から自分のモバイルデバイスを選択してください。接続した端末に以下のような画面が表示されれば成功です。

KotlinでAndroidのTextViewスパンに色を設定する方法を解説

  1. 【Android】TextViewの一部だけをクリック可能にする方法|SpannableStringとClickableSpanの使い方

    AndroidでTextViewの一部だけをクリック可能にする方法 Androidアプリ開発では、「利用規約」や「プライバシーポリシー」のように、長いテキストの中の特定の文字列だけをタップ可能にしたい場面があります。そんなときに役立つのがSpannableStringとClickableSpanです。 この記事では、TextView内の一部の文字列だけをクリック可能にする実装方法を、実際のサンプルコードとともにステップごとに解説します。 作成するアプリの概要 今回は「I want THIS and THIS to be CLICKED!」というテキストを表示し、そのうちの「THIS」「THIS

  2. 【Android開発】TextViewのSpan(文字列の一部)に色を設定する方法を解説

    この記事では、AndroidアプリでTextView内の特定の文字列(Span)に色を設定する方法を、実際のサンプルコードとともに解説します。SpannableStringとForegroundColorSpanを組み合わせれば、1つのTextViewの中でも部分的にテキストの色を変更できます。手順1:Android Studioで新規プロジェクトを作成Android Studioを起動し、メニューから「File」→「New Project」を選択します。必要な項目を入力して、新しいプロジェクトを作成してください。手順2:レイアウトファイル(activity_main.xml)を編集するres