目的

文字の一部分にだけ色を付けたい時の設定メモ

以下のようなHello first fragment(プロジェクト作成時にデフォルトであるやつ)のfirst部分だけ赤色にしたいと思います。

環境

  • Android Studio 4.1.1
  • Kotlin 1.4.32

対応メモ

やり方としてはHTMLタグを使う。。方法しか無いみたい。
string.xmlなどで設定している文字を以下のようにする。
HTMLタグの部分はエスケープしないとエラーになってしまう。
今回はfontタグのcolor属性で設定。

<string name="hello_first_fragment_color">Hello &lt;font color=\"#FF0000\"&gt;first&lt;/font&gt;fragment</string>

上記を以下のプログラム側で、HtmlCompat.fromHtmlを利用して呼び出す。
xml上で設定する方法は分からなかった。
xmlでandroid:text=とやっている場合は削除しておく(ktプログラムで上書きされるけど)

    import androidx.core.text.HtmlCompat

    ...
    ...

    fun xxx() {
        view.findViewById<TextView>(R.id.xxxx).text = HtmlCompat.fromHtml(getString(R.string.hello_first_fragment_color), HtmlCompat.FROM_HTML_MODE_LEGACY)
    }
    

以下のようになりました。