1超出固定宽度,ellipsize ; layoutwidth="60dp"
2超出单位宽度 , maxems; maxEms单行会自带省略号,maxEms 只有控件wrap_content才有效;并且得加上android:ellipsize="end"android:maxEms="12"android:maxLines="1"
【TextView】Android TextView显示省略号的问题(关于TextView maxLength 和maxEms的学习)
2016年10月19日 18:15:57 彼岸花you 阅读数:10859
1). maxLength
作用:设置TextView 文本显示的个数
理解:把text的字符取出来,截取了指定个数个字符,然后将截取的字符放到控件中去。和省略号无关
2)、maxEms
作用:设置TextView文本显示的长度(单位ems),设置match_parent和固定的dp值 之后,maxEms 无效。
使用:
maxEms和字符的个数没有关系,这里说的ems更像是一种单位。
当文本超过了指定的ems值得时候,有两种情况:
1) 单行:maxEms的设置会主动显示省略号(不添加ellipsize也会有省略号,有中文省略号是三个点,其余的省略号就可能只有一个点)
2) 多行:换行继续显示剩下的内容,如果这一行也到达了指定的位置,则继续换行显示。maxEms不会主动添加省略号。这个时候,如果想要添加省略号,就需要使用到ellipsize=”end”这个属性。
理解:只有设置wrap_content时,maxEms才有效。ellipsize 比较像直接设置控件的宽,忽略其中小小的差别。
maxLength和省略号无关;
解决方案:
maxEms单行会自带省略号,maxEms 只有控件wrap_content才有效;
直接设置控件宽度 ,当文本超过这个长度的时候,会自动添加省略号(多行的时候,不会自动添加省略号,和maxEms一致);
只能借助ellipsize属性,并且这里的实现效果也只是在达到整行的时候,如果还有数据需要显示,则显示省略号。
需求:TextView只能显示8个字符,有多余字符的时候显示省略号
思考:
通过maxEms 并不能指定字符个数。
不知道要怎么做了,唯一想到的是在界面初始化的时候,获取到控件的字符,在代码中进行字符处理(保存原有数据,判断有多少个字符,多余字符显示省略号等),将处理后的数据显示到界面上。