Android String.xml文件中使用占位符和html标签

做项目中遇到TextView中的文字需要中间某几个字需要动态获取并且突出显示,当然可以用几个TextView叠加来达到效果,这种方法相信不难,但是过于繁琐,大家都可以想到。这里主要介绍一下怎么通过占位符和html标签的形式来实现效果。
例如想要达到这种效果hello**Android**(假设Android这几个字设动态设置的,并且加粗)
首先在string.xml文件中声明

<string name="helloAndroid">hello&lt;b>%1$s&lt;/b></string>

(这里&lt;是<的转译,原因个人感觉如果不换一种方式来写的话,Android没有办法区分是本身string的标签还是html标签了。)
接下来就是在代码中获取内容然后显示了

    String str = getResources().getString(R.id.helloAndroid);
    String text = String.format(str,"Android");
    String txt = Html.fromHtml(text);
    ((TextView)findViewById(R.id.hello)).setText(txt);

这样就可以了,如果想要实现颜色同样可以添加html标签,例如显示黑色,就可以这样定义string

<string name="overstep_super_scholar_night">hello&lt;b>&lt;font color="#000000">%1$s&lt;/font>&lt;/b></string>

其他的标签自己发挥即可。

相关推荐