Android字符串着色

1. TextView的不同样式设置

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

String tAnswer = "<font color='#36ADAB'>" + answer + "</font>";
String tTo = "<font color='#333333'>" + to + "</font>";
String tAsker = "<font color='#36ADAB'>" + asker + "</font>";
String tContent = "<font color='#333333'>" + content + "</font>";

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("<font color='").append(colors[i]).append("'>").append(texts[i]).append("<font>");
        }
        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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容