Android 一个字符串实现不同颜色

来源:互联网 发布:python教学视频 编辑:程序博客网 时间:2024/05/01 05:33

最近遇到一个需求需要实现如下效果:


刚开始没在意,实现起来还是挺费劲,记录下来以便帮助更多需要的人。


首先这个字符串是一个拼接字符串,后面数字是动态的:

  1. <string name="new_password">Your password is %1$s</string>  
在网上找了下,有很多种方法,但需要考虑到实际情况,有一种说截取字符串长度,然后根据下标控制比如:0-3位红色,4-6位绿色,但我的项目中有十几种语言,很明显不行,于是试了以下这种,亲测有效:

<string name="new_password"><![CDATA[Your password is<font color="#00ff1212">%1$s</font>]]></string>


将需要变色的内容用html 标签中的<font></font>标签包裹起来,设置其颜色,将整个字符串放在[CDATA]标签中,好了到这一步我们xml里面就搞定了,下面我们需要在java文件中先将字符串做拼接:


String pwd = getResources().getString(R.string.new_password, password);
拼接字符串有很多种方法,自己随意,这里得到一个string型的字符串


Spanned s = Html.fromHtml(pwd);


使用Html.fromHtml目的是告诉程序使用了html代码,相当于解析,得到一个Spanned类型的字符,直接将s设置进textview就ok了。







注意:网上有说设置字体颜色的时候,有时候设置6位数,字体颜色不变,但本次测试过,有效,如果无效,请尝试加上透明度


0 0