目的
文字の一部分にだけ色を付けたい時の設定メモ
以下のような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 <font color=\"#FF0000\">first</font>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)
}
以下のようになりました。