TextView获取行数

607 阅读1分钟

在日常开发中经常会有文字过长时折叠或者收起功能,往往会通过先得到TextView的行数,超过行数就折叠。

1.ViewTreeObserver

mTextView.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
        @Override
        public void onGlobalLayout() {
            if(mTextView.getLineCount()>0){
            	//TODO
                mTextView.getViewTreeObserver()
                .removeOnGlobalLayoutListener(this);
            }
        }
    });

这种方式,会有一定的延迟,并且可能会调用多次,在列表中效果不太好,记得remove掉监听

2.View.post

mTextView.post(new Runnable() {
    @Override
    public void run() {
    	//TODO
    }
});

该种方式会把Runnable添加到队列,等view绘制完成,再去获取view宽高

3.StaticLayout

此种方式可参考juejin.cn/post/684490…