TextViewの文字列にHTMLタグが使えるのを知らなかったのでメモ。
今日も仕事で半分徹夜。そろそろ…
このように、文の一部分だけを赤色にしたいとする。ぱっと見全然難しいプログラムではなさそうだけど、実際にTextViewで実現しようとしたらちょっと迷った。
一番始めに思いついたのは、同色の文字毎にTextViewを作り横に並べれるという方法。1行に収まるならこれで良さそうだけど、複数行になる場合、自然な改行処理をするのがすごい面倒臭そうということで断念。 じゃあ、独自Viewを作ってdrawメソッド内にテキスト描画処理を組み込むか、と考えたけどこちらもむろんTextViewを使うだけの場合より相当面倒くさい。
こんな時に便利なのが、android.text.HtmlのfromHtmlメソッド。
HTMLタグを使えるので、以下のようにHTML文書を作成する感覚で手軽に文字修飾が出来てしまう。
textView.setText(Html.fromHtml(“今日も仕事で<font color=\”red\”> 半分徹夜</font>そろそろ…”));
さらに感動したのはbタグも使える事。 Androidの場合、機種によってはTextViewの日本語BOLD修飾が対応していない。 こういったケースの場合、いつもは苦肉の策としてPaintを使って文字淵を描いたり、TextViewのシャドウ機能を使って影を重ねて文字を太く見せたりしたけどHtml.fromHtmlを使えば、単純にbタグを使えばOKのよう。
これは非常に便利だ。 HTML5の時代にfontタグで文字修飾をするなんて相当なルール違反だろうけど、、まあ、TextViewはHTML文書ではないからいいよね?