Textview.getLineCount等于0的问题

本文解决TextView行数超出两行时不完全显示的问题。通过监听布局变化,确保getLineCount方法准确获取行数,实现动态调整。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Textview.getLineCount等于0的问题

Textview的显示问题,效果是当Textview的行数超过2行,后面的文字不显示,直接显示一个查看更多的按钮,一开始直接用getLineCount()判断行数,然后执行相应的操作,但是不行,后来才知道,是在布局还没渲染完毕的时候就调用了这个方法,getLineCount()必须要在界面已经渲染完毕的情况下操作有效,后来在百度找到了相关的解决方法:

ViewTreeObserver observer = tv.getViewTreeObserver(); // textAbstract为TextView控件  
            observer.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {  

                @Override  
                public void onGlobalLayout() {  
                    ViewTreeObserver obs = tv.getViewTreeObserver();  
                    obs.removeGlobalOnLayoutListener(this);  
                    if (tv.getLineCount() >= 2) {  
                        System.out.println("行数" + tv.getLineCount());  
                    }  
                }  
            });  

但是我自己这个方法不行,然后又找到另外一个方法

ViewTreeObserver vto = totalTitleNo.getViewTreeObserver();
vto.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
    @Override
    public boolean onPreDraw() {
        int lineCount = totalTitleNo.getLineCount();
        System.out.println(lineCount);
    }
});

用上面的方法成功解决了问题….

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值