2015年4月10日金曜日

[Android] TextViewのtextにHTMLを使用する

TextViewのtextにHTMLを使用しようとしても、普通に行うとHTMLタグは効きません(文字列としてそのまま出力されます)。 HTMLタグを有効にするにはandroid.text.Html#fromHtmlを使います。

TextView textView = (TextView) findViewById(R.id.someview);
String htmlText = "<p>HTMLタグを使って<strong>強調</strong>したい";
/* 普通にsetTextに渡した場合はHTMLタグは無視される(文字列としてそのまま表示される) */
textView.setText(htmlText);
// この場合の出力は
// 「<p>HTMLタグを使って<strong>強調</strong>したい」になり、タグは効かない
/* android.text.Html#fromHtmlを使ってタグを効かせる */
CharSequence formedHtmlText = Html.fromHtml(htmlText);
textView.setText(formedHtmlText);
// この場合の出力は<p>タグも<strong>タグも効いて文字列としては「HTMLタグを使って強調したい」になる
view raw gistfile1.java hosted with ❤ by GitHub

また、strings.xmlにHTMLを記述するためには、<、>、&、"をエスケープ表記する必要があります。先の文例で考えるなら、以下のようになります。

<string name="html_text">&lt;p&gt;HTMLタグを使って&lt;strong&gt;強調&lt;/strong&gt;したい&lt;/string&gt;</string>
<!-- なお、&nbsp;など&を持つ値を使いたい場合は &amp;nbsp; のように記述する -->
view raw gistfile1.xml hosted with ❤ by GitHub

0 件のコメント:

コメントを投稿