鸿蒙字体穿插其他颜色或其他风格,SpannerString,SpannableStringBuilder替代

编程入门 行业动态 更新时间:2024-10-21 11:47:36

<a href=https://www.elefans.com/category/jswz/34/1769261.html style=鸿蒙字体穿插其他颜色或其他风格,SpannerString,SpannableStringBuilder替代"/>

鸿蒙字体穿插其他颜色或其他风格,SpannerString,SpannableStringBuilder替代

在安卓TextView中穿插其他字体风格或不同颜色,通过SpannerString,SpannableStringBuilder来设置,鸿蒙中使用方案如下:

RichTextBuilder builder = new RichTextBuilder();
//设置字体不同颜色
builder.mergeForm(new TextForm().setTextSize(textSize).setTextColor(defaultColor));
builder.addText("设置字体颜色的方式");
builder.revertForm();//设置字体带删除线
builder.mergeForm(new TextForm().setTextSize(20).setTextColor(Color.BLACK.getValue()));
builder.mergeForm(new TextForm().setScaleX(1.5f).setStrikethrough(true));
builder.addText("Scale X1.5 带删除线");
builder.revertForm();//设置红色背景
builder.mergeForm(new TextForm().setTextBackgroundColor(Color.RED.getValue()));
builder.addText("设置红色背景");
builder.revertForm();//设置下划线1.5倍字体大小
builder.mergeForm(new TextForm().setUnderline(true).setRelativeTextSize(1.5f));
builder.addText("下划线1.5倍字体大小");
builder.revertForm();//设置上标
builder.mergeForm(new TextForm().setSuperscript(true));
builder.addText("字体上标");
builder.revertForm();//设置下标
builder.mergeForm(new TextForm().setSubscript(true));
builder.addText("字体下标");
builder.revertForm();RichText richText = builder.build();
//Text组件设置风格
text.setRichText(richText);

以上是设置字体风格的例子。下面展示一个demo,功能是字体穿插颜色。
效果如图:

 /*** 给字体穿插上色** @param str1           列表中某一项字符串* @param str2           搜索的字符* @param defaultColor   默认的颜色* @param highlightColor 红色* @param textSize       字体大小* @return 封装好的颜色字体*/public static RichTextBuilder highLightLCS(String str1, String str2, int defaultColor, int highlightColor, int textSize) {String lcs = str2.toLowerCase(Locale.ROOT);String tLower = str1.toLowerCase(Locale.ROOT);RichTextBuilder builder = new RichTextBuilder();int defaultFlag = 0;int flag = -1;for (int i = 0; i < tLower.length() && lcs.length() > 0; i++) {if (tLower.charAt(i) == lcs.charAt(0)) {lcs = lcs.substring(1);flag = i;if (flag - defaultFlag != 0) {String strStart = str1.substring(defaultFlag, flag);builder.mergeForm(new TextForm().setTextSize(textSize).setTextColor(defaultColor));builder.addText(strStart);builder.revertForm();}String strLast = str1.substring(flag, flag + 1);builder.mergeForm(new TextForm().setTextSize(textSize).setTextColor(highlightColor));builder.addText(strLast);builder.revertForm();flag = flag + 1;defaultFlag = flag;}}if (flag != -1 && defaultFlag != 0 && defaultFlag != str1.length()) {String strEnd = str1.substring(defaultFlag, str1.length());builder.mergeForm(new TextForm().setTextSize(textSize).setTextColor(defaultColor));builder.addText(strEnd);builder.revertForm();}return builder;}

更多推荐

鸿蒙字体穿插其他颜色或其他风格,SpannerString,SpannableStringBuilder替代

本文发布于:2024-02-25 15:18:49,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1699405.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:鸿蒙   或其他   字体   颜色   风格

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!