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