安卓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);
}