TextUtils

作者: 有点健忘 | 来源:发表于2019-08-16 15:42 被阅读0次

常用的几个:拼接字符串,判断字符串相等,是否为空


image.png

说个不常用的

ellipsize

首先这个东西哪里用到了?
在自定义view里,我用canvas 要draw一个文本,可画布宽只有100,文字可能很长,那么有一部分跑到画布外去了,一般为了给用户提示,我们都用三个点来省略多余的内容的。

不关心从哪个地方开始点点点的,就用参数少的那个方法

public static CharSequence ellipsize(CharSequence text,
                                         TextPaint paint,
                                         float avail, TruncateAt where,
                                         boolean preserveLength,
                                         @Nullable EllipsizeCallback callback)

text:原始的文本内容
paint:canvas用到的画笔
avail:画布能提供的宽度
where:枚举类型,就是 省略号显示的位置

    public enum TruncateAt {
        START,
        MIDDLE,
        END,
        MARQUEE,
        /**
         * @hide
         */
        END_SMALL
    }

preserveLength:这玩意咋说了,为true的话,返回的字符串长度和原始的长度是一样的,说是用宽度为0的空白来占位的,
比如原来字符串“xxxxxxxxx” 结果是“xxx...”看起来长度不一样,你getLength发现长度是一样的
callback:回调,返回的start和end就是省略号替换的部分的开始和结束的索引

String  word="hello baby abcdefghijklmn";
TextUtils.ellipsize(word, new TextPaint(), 100, TextUtils.TruncateAt.END);

        CharSequence result=TextUtils.ellipsize(word, new TextPaint(), 100, TextUtils.TruncateAt.END, false, new TextUtils.EllipsizeCallback() {
            @Override
            public void ellipsized(int start, int end) {
                System.out.println("start/end========="+start+"/"+end);
            }
        });

expandTemplate

这玩意类似getString那种format的,就是用后边的替换前边的一些特殊字符
替换^1,^2,^3这种,从1开的,后边跟着的数组长度可以比这个大,多余的无效,可是不能比这个小

TextUtils.expandTemplate("hello ^1 hd ^2 xx^3","one","two","three");

相关文章

网友评论

    本文标题:TextUtils

    本文链接:https://www.haomeiwen.com/subject/aeezcctx.html