環境
- macOS High Sierra
- Android Studio 3.2
- Nexus 5X API 24 エミュレータ
方法
[android] TextViewでHTMLを表示するには?の抜粋。
HTMLでタグ付けした文字列を<![CDATA[]]>
で囲ったものをstrings.xmlに書いて、java側で読み込んで表示する
strings.xml
<resources>
<string name="test">
<![CDATA[
<h1>hello HTML</h1>
]]>
</string>
</resources>
text_sampleというidのTextViewが定義されたlayoutをsetContentView()した上で
MainActivity.java
TextView txt=findViewById(R.id.text_sample);
txt.setText(Html.fromHtml(getString(R.string.test)));
<h1>
が適用されたhello HTMLが表示されるはず
(なんでも適用できるわけではない模様。<ol>
が数字にならなかったり。)
CDATAセクションとは
こちらによると、
XMLではマークアップ用記号を直接記述できないが、CDATAセクション内では可能とのこと。
XMLはマークアップ言語であるため、XML文書を記述する際には、マークアップ用として指定された記号を直接文字として記述することができない。これを記述してもマークアップの指定と解釈され、文字として解釈されないためである。しかし、場合によっては、この方法はXML文書の記述や管理を煩雑にする場合がある。このような場合に、マークアップ専用の記号であって、通常の文字として扱う特例的な部分をつくることができる。これを、CDATAセクションという。