HTMLタグでテキストビュー内の文字列を装飾
エディットテキストやテキストビュー全体で文字色を変更するにはsetTextColor関数などを使います。たとえば、
TextView textView = (TextView)findViewById(R.id.textView); textView.setTextColor(R.color.red_color);
このようにするとR.color.red_colorで表されるリソースの色がテキストの文字色になります。
しかし、テキストの一部の色を変えるようなメソッドは用意されていません。そこでHTMLタグを使います。
HTMLタグの使用方法
例えばビュー内の色を変えたい文字列をfontタグで囲み、その文字列をHTMLに変換するのにHtmlクラスを使います。次のように一部の文字列を変化させることが可能です。
EditText editText = (EditText)findViewById(R.id.edit_text); editText.setText(Html.fromHtml("<font color=\"red\">" + "red text" + "</font>"));
注意 : fromHtmlメソッドに渡す文字列中の"は\"に置き換えています。
この例では"red text"という文字列が赤色で表示されます。
文字列ないでタグを使い、それをHTMLに変換するだけでよいので非常に簡単です。
fromHtmlで使用可能なテキストを装飾するタグには以下のものがあります。
タグ | 利用可の属性 | 使われ方 |
---|---|---|
<b> | 無し | 太字にします。 |
<u> | 無し | 下線を引きます。 |
<i> | 無し | 斜体にします。 |
<font> | size, color, face | color属性とface属性でそれぞれ文字色やフォントを変えます。 |
<sup> | 無し | 上付き文字を表示します。 |
<sub> | 無し | した付き文字を表示します。 |
<big> | 無し | 相対的に文字を大きくします。 |
<small> | 無し | 相対的に文字を小さくします。 |
テキスト装飾以外の用途も合わせれば他にも使えるタグはあります。(<img>など)
ただし、実際のHTMLと違って使える属性やタグには制限があります。
タグをビューで使うときの注意点
テキストビューをタグだけで簡単に装飾できますが、その際、注意しなければならないこととして以下の点があります。
- 改行はbrタグを使う
例えば、次のような文字列があるとします。
String str = "12345\n6789\n";
途中に改行(ここでは\n)が入っているのでこの文字列をHtmlに渡すには次のようにします。
String str = "12345\n6789\n"; str = str.replaceAll(System.getProperty("line.separator"), "<br/>"); EditText editText = (EditText)findViewById(R.id.editText); editText.setText(Html.fromHtml(str);
System.getProperty("line.separator")がシステム固有の改行コードで、それをbrタグに置換します。
- 空白文字を文字参照する
半角文字で複数のスペースなどがある場合は1つのスペースに置き換えられてしまうので、次のようにスペースは#160;などとして文字参照します。
String str = "space text"; str = str.replace(" ", "#160;"); EditText editText = (EditText)findViewById(R.id.editText); editText.setText(Html.fromHtml(str);
この例では半角のスペース3つを によって文字参照しています。