TextView maxEms 与显示省略号的问题
em
em是一个印刷排版的单位,表示字宽的单位。 equal M 意思和M字符一致的宽度为一个单位,简称em。
ems是em的复数表达。
附:setEm代码
public void setEms(int ems) {
mMaxWidth = mMinWidth = ems;
mMaxWidthMode = mMinWidthMode = EMS;
requestLayout();
invalidate();
}
比较
maxLength=”5” 限制TextView最多5个字符数。汉字、英文、数字都算一个字符。超过限制时截断,不会有省略号。
maxEms=”5” 限制TextView的最大宽度为5个大写M的字符宽度。必须与layout_width=”wrap_content”搭配使用,否则失效。
maxWidth=”80dp” 限制TextView最大宽度,必须与layout_width=”wrap_content”搭配使用,否则失效。
maxEms与maxWidth很相似,只是单位不一样,都可以和ellipsize属性共用,以在超出限制时显示省略号。
maxEms的详解
单行:maxEms的设置会主动显示省略号。
多行:换行继续显示剩下的内容,如果这一行也到达了指定的位置,则继续换行显示。maxEms不会主动添加省略号。这个时候,如果想要添加省略号,就需要使用到ellipsize=”end”这个属性。
通过maxEms并不能指定字符个数。如果需要控制最多显示字符数,只能在代码中进行字符处理,判断有多少个字符,多余字符显示省略号等。