TextView maxEms 与显示省略号的问题

作者:陆金龙    发表时间:2018-10-02 10:25   


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并不能指定字符个数。如果需要控制最多显示字符数,只能在代码中进行字符处理,判断有多少个字符,多余字符显示省略号等。