效果
省流
SpnnableStringBuilder span = new SpannableStringBuilder(“只因你太美baby只因你实在太美baby”);
//startIndex-开始索引下标 endIndex-结束索引下标
//字号大小(相对原本AppCompatTextView字号大小)
span.setSpan(new RelativeSizeSpan(0.75f),startIndex,endIndex,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
//字体颜色
span.setSpan(new ForegroundColorSpan(Color.parseColor("#999999")),startIndex,endIndex,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
//字号加粗
span.setSpan(new StyleSpan(Typeface.BOLD),startIndex,endIndex,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
废流
同一TextView设置不同的文本效果(字号大小,字体颜色,字体风格等),SpannableStringBuilder方便且灵活。
public void setSpan(Object what, int start, int end, int flags) {}
我们来看一下setSpan()方法的具体参数:
1.what:
样式对象:RelativeSizeSpan(只有相对尺寸设置,这意味这你必须设置原本的TextView尺寸大小) StyleSpan(字体风格设置,Typeface.BOLD加粗,Typeface.NORMAl正常) ForegroundColorSpan(字体颜色)
2.start:
开始应用样式的字符串索引下标,包含该字符串本身 例如:“只因你太美baby”,若sart = 0,end =2,则应用样式的字符串只有“只因”。
3.end:
结束应用样式的字符串索引下标,不包含该字符串本身 例如:“只因你太美baby”,若sart = 3,end =5,用样式的字符串只有“太美”。
4.flags:
常用的flags:
- Spanned.SPAN_EXCLUSIVE_EXCLUSIVE:前后插入文本,都不应用新的样式
- Spanned.SPAN_EXCLUSIVE_INCLUSIVE:前面插入文本不应用新样式,后面插入文本应用新样式
- Spanned.SPAN_INCLUSIVE_EXCLUSIVE:前面插入文本应用新样式,后面插入文本不应用新样式
- Spanned.SPAN_INCLUSIVE_INCLUSIVE:前后插入文本,都应用新的样式