改變TextView特定字元顏色及背景可正則匹配
阿新 • • 發佈:2019-02-02
安卓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);
}