android 4.4 系统 原生Textview BUG 及解决方案

         今天遇到一个问题关于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 这样再末尾增加了一个空格,处于临界值时候因为多了一个空格所以省略号就出来了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值