当前位置:   article > 正文

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

鸿蒙arkts 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);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35

以上是设置字体风格的例子。下面展示一个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;
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/291019
推荐阅读
相关标签
  

闽ICP备14008679号