需求:一行文字中需要某些文字有不同的样式
实现:
数字特殊样式
Spannable builder =new SpannableString("需要调整的textView内容");
ForegroundColorSpan span =new ForegroundColorSpan(getResources().getColor(R.color
.similar_pic_num_color));//修改文字颜色
builder.setSpan(span,4,6,Spanned.SPAN_INCLUSIVE_INCLUSIVE);
similarPicNumber.setText(builder);
百分数的整数部分和小数部分样式不同
Spannable spannable =new SpannableString(viewHolder.similar.getText().toString());
spannable.setSpan(new AbsoluteSizeSpan(16, true),0,2,Spannable.SPAN_INCLUSIVE_INCLUSIVE);//修改文字大小
spannable.setSpan(new AbsoluteSizeSpan(12, true),2,4,Spannable.SPAN_INCLUSIVE_INCLUSIVE);
spannable.setSpan(new AbsoluteSizeSpan(10, true),4,5,Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
viewHolder.similar.setText(spannable);
主要关键是这个函数的使用
public void setSpan(Object what,int start,int end,int flags) {
super.setSpan(what, start, end, flags);
}
what:对应各种span
start:开始应用指定Span的位置,索引从0开始
end:结束应用指定Span的位置,特效并不包括这个位置。
flags的取值有如下四个
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE:前后都不包括
Spannable.SPAN_EXCLUSIVE_INCLUSIVE:不包括前,包括后
Spannable.SPAN_INCLUSIVE_INCLUSIVE:前后都包括
Spannable.SPAN_INCLUSIVE_EXCLUSIVE:包括前,不包括后