TextUtils
2019-08-16 本文已影响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");