Android字符串着色

1. TextView的不同样式设置

方法1.使用Html.fromHtml方法:

String tAnswer = "" + answer + "";
String tTo = "" + to + "";
String tAsker = "" + asker + "";
String tContent = "" + content + "";

tvLayer.setText(Html.fromHtml(tAnswer + tTo + tAsker + tContent));

依次对字符串着色 , 最后统一处理 , 可以出工具类来统一处理, 在这里对传入参数必须做一个长度的判断来防止异常的产生.

    @SuppressLint("SupportAnnotationUsage")
    public static Spanned getStringWithColor(@NonNull String[] texts, @NonNull @ColorRes String[] colors) {
        if (texts.length != colors.length) throw new IllegalArgumentException("数组长度必须匹配");
        StringBuilder s = new StringBuilder();
        for (int i = 0; i < texts.length; i++) {
            s.append("").append(texts[i]).append("");
        }
        return Html.fromHtml(s.toString());
    }

方法2.使用SpannableString方法

SpannableString text = new SpannableString(“输入课程名称,如管理”); 
text.setSpan(new ForegroundColorSpan(ContextCompat.getColor(this, R.color.text_color_gray)), 0, 10,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
text.setSpan(new AbsoluteSizeSpan(textSize1), 10, 14, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); 
TextView.setText(text);

这里的setSpan方法支持如下的几个属性

  1. 字体颜色-------ForegroundColorSpan
  2. 字体大小-------AbsoluteSizeSpan
  3. 背景颜色-------BackgroundColorSpan
  4. 超链接----------URLSpan
  5. 粗体、斜体----StyleSpan
  6. 删除线----------StrikethroughSpan
  7. 下划线----------UnderlineSpan
  8. 图片-------------ImageSpan

你可能感兴趣的:(Android字符串着色)