安卓TextView的文本,要想改变部分文字颜色,其实是很简单的事情,只需要正确匹配出要修改的String文本的下标,并创建SpannableStringBuilder对象,设置属性即可。至于使用一些富文本的工具类,算是大材小用了。
下面自己编写的一个简单的方法,调用传参即可。
/**
* @author xiaoming 2015年8月17日
* @describe 设置富文本,改变textView部分文字颜色
* @param tv textView控件
* @param str 原文本
* @param regExp 正则表达式
* @returnType void
*/
public static void richText(TextView tv, String str, String regExp) {
SpannableStringBuilder style = new SpannableStringBuilder(str);
Pattern p = Pattern.compile(regExp, Pattern.CASE_INSENSITIVE);
Matcher m = p.matcher(str);
while (m.find()) {
int start = m.start(0);
int end = m.end(0);
style.setSpan(new BackgroundColorSpan(Color.BLACK), start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); //指定位置文本的背景颜色
style.setSpan(new ForegroundColorSpan(Color.RED), start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); //指定位置文本的字体颜色
}
tv.setText(style);
}