項目需求:匹配一定的規則後給一個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對象