有时候需要给TextView中的部分文字设置字体或颜色等样式,设置的样式最好好的方式就是用HTML,android的TextView也是支持加载基础的html的代码的。

  • 字体颜色可以采用font,也可以使用ColorSpan;
  • 字体大小可以使用<big>、<small>和 <h1>到<h6>的标签,还可以采用SizeSpan;
  • Spannable功能比较全面,调用setSpan即可为TextView设置美丽的特效,其支持的特效在CharacterStyle中定义,有好多种,比如AbsoluteSizeSpan、ForegroundColorSpan以及BackgroundColorSpan等。

但有时,我们可能想直接在string.xml文件中使用文本,添加需要改变的文本颜色

1
<string name="text"><font color='#ff0000'>hello world</font> 文本</string>

这是在html中的写法,但是如果再xml中也直接这么写,将会没有效果,因为xml把font也当作一个标签来读取了(android studio会高亮),但是又不能识别,所以没有任何效果。要对<、>、’、”这四个字符进行转换,因为它们四个是HTML的标签。以下为XML标志符的数字和字符串转义符

1
2
3
4
5
” (&#34; 或 &quot;)
‘ (&#39; 或 &apos;)
& (&#38; 或 &amp;)
lt(<) (&#60; 或 &lt;)
gt(>) (&#62; 或 &gt;)

转义后的字符串为

1
<string name="text">&lt;font color=&quot;#ff0000&quot;&gt;hello world&lt;/font&gt; 文本</string>

在代码中设置就可以

1
textView.setText(Html.fromHtml(getString(R.string.text)));