做项目中遇到TextView中的文字需要中间某几个字需要动态获取并且突出显示,当然可以用几个TextView叠加来达到效果,这种方法相信不难,但是过于繁琐,大家都可以想到。这里主要介绍一下怎么通过占位符和html标签的形式来实现效果。
例如想要达到这种效果hello**Android**(假设Android这几个字设动态设置的,并且加粗)
首先在string.xml文件中声明
<string>hello<b>%1$s</b></string>
(这里<是<的转译,原因个人感觉如果不换一种方式来写的话,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>hello<b><font color="#000000">%1$s</font></b></string>
其他的标签自己发挥即可。