开发中经常会遇到同一个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("正常显示");
效果图如下