ページ

2013/05/08

[Android]stringリソースにHTMLを入れる

TextView で簡単な HTML 表現をしたかったのでどうやってやろうかと思ったら
いくつか方法があるみたい。

1. bold, italic, underline タグはそのまま使える

Styling with HTML markup | String Resources | Android Developers
実は <b>, <i>, <u>タグはそのまま string リソースに入れても問題ないらしい。
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="welcome">Welcome to <b>Android</b>!</string>
</resources>
まじか。この記事を書くにあたって初めて知った。しかしこれでは表現力が低い。そんな時は次の方法で。

2. stringリソースにエスケープした HTML を入れる

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="welcome">Welcome to &lt;b&gt;Android&lt;/b&gt;!</string>
</resources>
サンプルは同じだけどエスケープすればもっと色んなタグを使用できる。
:Tips  TextView を使いこなそう ~ 表示編 ~  その2 - - Google Android -  雑記帳
How to display HTML in android TextView | JavatechIG
TextView で使用出来るタグと属性一覧
<a href="...">
<b>, <big>, <blockquote>, <br>, <cite>, <dfn>
<div align="...">, <em>, <font size="..." color="..." face="...">
<h1>, <h2>, <h3>, <h4>, <h5>, <h6>
<i>, <img src="...">, <p>, <small>
<strike>, <strong>, <sub>, <sup>, <tt>, <u>

3. XML の CDATA セクションを使う

CDATA セクションとは のこと。これを使えば以下のように書ける。
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="welcome"><![CDATA[Welcome to Android!]]></string>
</resources>
android - Set TextView text from html-formatted string resource in XML - Stack Overflow
string リソースに HTML を入れる方法ではコレが一番可読性が良くて保守しやすい。
res/raw フォルダに html ファイルを直接持って読み込む方式の方が一番いいかもしれないけど
res/raw フォルダから文字列を読み込む処理を書かなければいけない。