同一个TextView,不同颜色,不同字体大小设置

开发中经常会遇到同一个TextView需要显示不同颜色,不同字体大小的文字。

通过SpannableStringBuilder可以很容易的实现这两个功能。

以下是一个自定义的SpannableUtils

public class SpannableUtils {
    static SpannableStringBuilder spannableStringBuilder = new SpannableStringBuilder();

    public static SpannableStringBuilder showDiffColor(String str, int start,int end) {
        if (spannableStringBuilder.length() > 0) {
            spannableStringBuilder.clear();
        }
        spannableStringBuilder.append(str);
        spannableStringBuilder.setSpan(new ForegroundColorSpan(Color.parseColor("#427fed")), start,
            end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

        return spannableStringBuilder;
    }

    public static SpannableStringBuilder showDiffSize(String str, int start, int end, int size) {
        if (spannableStringBuilder.length() > 0) {
            spannableStringBuilder.clear();
        }
        spannableStringBuilder.append(str);
        spannableStringBuilder.setSpan(new AbsoluteSizeSpan(size), start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

        return spannableStringBuilder;
    }
}

 
  
使用如下
 
  
tv1.setText(SpannableUtils.showDiffColor("测试不同颜色",1,3));
//由于AbsoluteSizeSpan的size是像素,因为在使用时,需要将sp转为px
tv2.setText(SpannableUtils.showDiffSize("测试不同size", 1, 3, DeviceUtils.dip2px(this, 25)));
tv3.setText("正常显示");

 
  
 
  
效果图如下
 
  

你可能感兴趣的:(同一个TextView,不同颜色,不同字体大小设置)