01、概述
在开发需求中,会遇到字符串中的某个部分变色,加粗的需求。当然可是使用SpannableString 来实现,这里记录一下通过Html方式来实现这种效果
02、代码
textView.setText(Html.fromHtml(this.getString(R.string.ceshi, "01.01", "26")));
textView1.setText(Html.fromHtml(this.getString(R.string.ceshi1, "01.01", "26")));
textView2.setText(Html.fromHtml(this.getString(R.string.ceshi2, "不加粗")));
03、资源
<!-- 不用转义 -->
<string name="ceshi">不转义:生日(加粗)= <![CDATA[<font color="#ff0000"><big><b>%1$s</b></big></font> 年龄(不加粗)= <font color="#00ff00">%2$s</font>]]></string>
<!-- 转义 -->
<string name="ceshi1">—转义:生日(加粗)= <font color="#ff0000"><big><b>%1$s</b></big></font> 年龄(不加粗)= <font color="#0000ff">%2$s</font></string>
<!-- 不加粗 -->
<string name="ceshi2">不加粗:<font color="#0000ff">%1$s</font></string>
04、补充:用String 格式化
代码:
textView3.setText(String.format(getString(R.string.ceshi3), 9));
textView4.setText(String.format(getString(R.string.ceshi4), "张三"));
资源:
<!-- int 类型数字变化 -->
<string name="ceshi3">消息个数(%1$d)</string>
<!-- String 类型 -->
<string name="ceshi4">你的名字:%1$s</string>
05、补充:用String 格式化 Html 的转义符号
这里记录几个字符,有其他特殊需求,可以参考Html 手册 http://www.w3school.com.cn/tags/html_ref_symbols.html
代码:
textView5.setText(String.format(getString(R.string.ceshi5), 22));
textView6.setText(String.format(getString(R.string.ceshi6)));
textView7.setText(String.format(getString(R.string.ceshi7)));
资源:
<!-- 空格 \u2000 -->
<string name="ceshi5">年龄\u2000%1$d岁</string>
<!-- 省略号... \u2026 -->
<string name="ceshi6">加载中\u2026</string>
<!-- 横杠- & #8211; -->
<string name="ceshi7">数字6& #8211;20范围</string>