项目需求:匹配一定的规则后给一个Textview上的文本设置不同的颜色。
int txtLength = mContentTxt.length(); SpannableStringBuilder stringBuilder = new SpannableStringBuilder(mContentTxt); for (int i = 0; i < mMatchIndex.size(); i++) { int start = mMatchIndex.get(i); if (start < txtLength) { stringBuilder.setSpan(new ForegroundColorSpan(getResources().getColor(R.color.color_72c878)), start, start + 1, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); } } tvContent.setText(stringBuilder);
如上代码,setSpan中传的第一个参数必须是在此处new出来的,否则只在for循环的最后一次有效。
即每设置一次均需要一个Span对象