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方法支持如下的几个属性
- 字体颜色-------ForegroundColorSpan
- 字体大小-------AbsoluteSizeSpan
- 背景颜色-------BackgroundColorSpan
- 超链接----------URLSpan
- 粗体、斜体----StyleSpan
- 删除线----------StrikethroughSpan
- 下划线----------UnderlineSpan
- 图片-------------ImageSpan