【TextView】Android TextView显示省略号的问题(关于TextView maxLength 和maxEms的学习)

1、TextView的属性maxLength和maxEms

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 比较像直接设置控件的宽,忽略其中小小的差别。

2、单行省略号

maxLength和省略号无关;
解决方案:

  1. maxEms单行会自带省略号,maxEms 只有控件wrap_content才有效;
  2. 直接设置控件宽度 ,当文本超过这个长度的时候,会自动添加省略号(多行的时候,不会自动添加省略号,和maxEms一致);

3、多行省略号

只能借助ellipsize属性,并且这里的实现效果也只是在达到整行的时候,如果还有数据需要显示,则显示省略号。

4、限定TextView显示字符的个数,多余的显示省略号

需求:TextView只能显示8个字符,有多余字符的时候显示省略号
思考
通过maxEms 并不能指定字符个数。
不知道要怎么做了,唯一想到的是在界面初始化的时候,获取到控件的字符,在代码中进行字符处理(保存原有数据,判断有多少个字符,多余字符显示省略号等),将处理后的数据显示到界面上。

你可能感兴趣的:(android)