设置字符串中指定文字的颜色
/**
* 对指定字符设置颜色
* @param str
* 字符串
* @param ch1
* 切换颜色开始的字符
* @param ch2
* 切换颜色停止的字符
* @param color
* 设置的颜色
* @param tv
* TextView控件
*/
private void setTVColor(String str , char ch1 , char ch2 , int color , TextView tv){
int a = str.indexOf(ch1); //从字符ch1的下标开始
int b = str.indexOf(ch2)+1; //到字符ch2的下标+1结束,因为SpannableStringBuilder的setSpan方法中区间为[ a,b )左闭右开
SpannableStringBuilder builder = new SpannableStringBuilder(str);
builder.setSpan(new ForegroundColorSpan(color), a, b, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
tv.setText(builder);
}
设置字符串中数字的颜色与大小
public static SpannableStringBuilder setNumColor(String str) {
SpannableStringBuilder style = new SpannableStringBuilder(str);
for (int i = 0; i < str.length(); i++) {
char a = str.charAt(i);
if (a >= '0' && a <= '9') {
//设置颜色
style.setSpan(new ForegroundColorSpan(Color.RED), i, i + 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
//设置大小
style.setSpan(new RelativeSizeSpan(3.0f), i, i + 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
}
}
return style;
}
使用
textView.setText(setNumColor("今天吃了1碗饭,喝了1杯水"));