赞
踩
在安卓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; }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。