问题描述
在使用SpannableString给字符串中的部分关键字添加特效(如:颜色,大小)时,利用for循环执行SpannableString.setSpan()方法,发现只有最后一个关键字生效。
// 错误的写法
SpannableString result = new SpannableString("一二三关键字四五六关键字七八");
ForegroundColorSpan colorSpan = new ForegroundColorSpan(Color.RED);
for(int startIndex : keywordIndex) {
result.setSpan(colorSpan, startIndex, startIndex + 3, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
}
问题分析
解决方案
// 正确的写法
SpannableString result = new SpannableString("一二三关键字四五六关键字七八");
for(int startIndex : keywordIndex) {
ForegroundColorSpan colorSpan = new ForegroundColorSpan(Color.RED);
result.setSpan(colorSpan, startIndex, startIndex + 3, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
}
网友评论