Android SpannableString处理TextView文字特殊样式

需求:一行文字中需要某些文字有不同的样式

数字特殊样式


Android SpannableString处理TextView文字特殊样式_第1张图片
百分数的整数部分和小数部分样式不同

实现:

数字特殊样式

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:包括前,不包括后

你可能感兴趣的:(Android SpannableString处理TextView文字特殊样式)