文章目录
一、SpannableStringBuilder 参数
对应参数:
ForegroundColorSpan: 文本颜色
BackgroundColorSpan : 文本背景色
AbsoluteSizeSpan: 文本字体(绝对大小)
StyleSpan : 字体样式:粗体、斜体等
StrikethroughSpan : 删除线
ImageSpan : 图片
MaskFilterSpan: 修饰效果,如模糊(BlurMaskFilter)浮雕
UnderlineSpan: 下划线
RasterizerSpan: 光栅效果
SuggestionSpan: 相当于占位符
DynamicDrawableSpan : 设置图片,基于文本基线或底部对齐
RelativeSizeSpan: 相对大小(文本字体)
ScaleXSpan: 基于x轴缩放
TextAppearanceSpan : 文本外貌(包括字体、大小、样式和颜色)
SubscriptSpan : 下标(数学公式会用到)
SuperscriptSpan: 上标(数学公式会用到)
TypefaceSpan : 文本字体
URLSpan: 文本超链接
Spannable.SPAN_EXCLUSIVE_INCLUSIVE:在 Span前面输入的字符不应用 Span的效果,在后面输入的字符应用Span效果
Spannable.SPAN_INCLUSIVE_EXCLUSIVE:在 Span前面输入的字符应用 Span 的效果,在后面输入的字符不应用Span效果
Spannable.SPAN_INCUJSIVE_INCLUSIVE:在 Span前后输入的字符都应用 Span 的效果
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE:前后都不包括
二、简单使用
代码如下(示例):
private SpannableStringBuilder fillColor(String wholeStr, String highlightStr, int color) { int start; int end; if (!TextUtils.isEmpty(wholeStr) && !TextUtils.isEmpty(highlightStr)) { if (wholeStr.contains(highlightStr)) { start = wholeStr.indexOf(highlightStr); end = start + highlightStr.length(); } else { return null; } } else { return null; } SpannableStringBuilder spBuilder = new SpannableStringBuilder(wholeStr); CharacterStyle charaStyle = new ForegroundColorSpan(color); spBuilder.setSpan(charaStyle, start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); return spBuilder; }调用方法:
String s = " 我是第一行aaaa\naaaaa我是第二行\n我是第三行设定VS和VS是色红红火火恍aaaaaaaaaaa恍惚惚或或或或或或或或或或解决好家伙哈哈哈哈\n我是第四行"; SpannableStringBuilder stringBuilder = fillColor(s, "aaaaaaaaaaa", Color.RED); logPrintTv.setText(stringBuilder == null ? s : stringBuilder);
二.封装方法
代码如下(示例):
效果展示:
记录学习,欢迎讨论