android获取textview的行数
16lz
2021-12-04
最近做一个需求要判断Textview的行数。那具体应该怎么做呢?直接用代码解释。
Android中有个方法是:mTextView.getLineCount() ;
看似用这个方法就可以解决,但真正使用时候发现返回总是0。看了一下官方注释:
/*** Return the number of lines of text, or 0 if the *internal Layout has notbeen built.*/
注释是说如果Layout方法没有构建完成返回0,只有当Layout完成才会返回正确的行数。那我们怎么保证在Layout执行完去调用获取行数的方法呢?
解决方法是:
mTextView.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() { @Override public void onGlobalLayout() { Log.e(TAG, "行数"+mTextView.getLineCount()); if(mTextView.getLineCount()>0){ mTextView.getViewTreeObserver() .removeOnGlobalLayoutListener(this); } } });
当TeXtView在绘制的时候就会回调这个方法,注意当我们得到了想要的值之后注意移除GlobalOnLayoutListener避免多余的执行。
更多相关文章
- 浅谈Java中Collections.sort对List排序的两种方法
- Python list sort方法的具体使用
- python list.sort()根据多个关键字排序的方法实现
- Android完全退出应用程序
- [Android] 获取Android设备的唯一识别码|设备号|序号|UUID
- Android(安卓)sql数据库的Android包里面的函数介绍
- Android中bindService的使用及Service生命周期
- Android(安卓)8.1 中Systemui中的常见修改(八)SystemUI加载流程
- Tabhost中Activity绑定Service