今天遇到一个问题关于textview 的。在4.4 和 8.0 系统中验证 初步确定改问题在4.4中存在。后面的系统解决了这个问题;
textview 设置属性如下:
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:lines="2" android:ellipsize="end"/>
想要的效果,如果文本超过两行。第二行的末尾显示“ ... ” 。一半情况都是可以达到想要的效果的。BUT 有一个特例,就是文字正好处于2行显示不用显示省略号的情况下。你如果多些一个字,你会发现没有显示这个字,我们想要的省略号页没有显示出来。
是的就是这么恶心,没发现就算了 ,发现了这样的问题一定要处理的。
解决方法很多,
最难最恶心的一种方案就是重写textview,根据行宽确定每行字的内容,最后一行留出一个字符的位置显示省略号。
第二种方案,在 群里面"杰哥哥"的指引下,根据BUG 的表现形式,用如下办法解决:
@Override public void setText(CharSequence text, BufferType type) { //父类初始化的时候子类暂时没有初始化, 覆盖方法会被执行,屏蔽掉 if (TextUtils.isEmpty(text)) { super.setText(text, type); return; } //4.4系统settext 处于显示省略号的临界值会有一个字符显示不出来 StringBuffer sb = new StringBuff(text); sb.append(" "); text = sb.toString();
重写setText 这样再末尾增加了一个空格,处于临界值时候因为多了一个空格所以省略号就出来了。