Android中获取TextView行数
2016-08-08 09:18
741 查看
Android 获取TextView行数
项目中发现,如果直接通过TextView.getLineCount()方法获取行数时,总是0,研究发现,setText()后立即调用getLineCount(),
这时TextView还未完成measure,要想正确的获取TextView的行数有两种方法
1.用ViewTreeObserver监听View初始化的各种状态
使用ViewTreeObserver的OnPreDrawListener在TextView完成测量和定位即将绘制时调用getLineCount()即可得到TextView的真实行数,代码如下:
注意红框部分。
2.View.post(Runnable
r)方法
代码如下:
这个Runnable会被添加到一个顺序执行的UI事件队列,等执行到里面的代码时,View已经完成了measure和layout等一系列
初始化工作,所以可以正确获取到View的高度等信息
项目中发现,如果直接通过TextView.getLineCount()方法获取行数时,总是0,研究发现,setText()后立即调用getLineCount(),
这时TextView还未完成measure,要想正确的获取TextView的行数有两种方法
1.用ViewTreeObserver监听View初始化的各种状态
使用ViewTreeObserver的OnPreDrawListener在TextView完成测量和定位即将绘制时调用getLineCount()即可得到TextView的真实行数,代码如下:
tv_test.getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() { @Override public boolean onPreDraw() { //这个回调会调用多次,获取完行数记得注销监听 tv_test.getViewTreeObserver().removeOnPreDrawListener(this); LogUtils.e("TextView 行数:" + tv_test.getLineCount()); return false; } }); tv_test.setText("老人取件发现“巨奖” 将计就计反忽悠骗子老人取件发现“巨奖”");
注意红框部分。
2.View.post(Runnable
r)方法
代码如下:
tv_test.post(new Runnable() { @Override public void run() { LogUtils.e("行数:"+tv_test.getLineCount()); } }); tv_test.setText("老人取件发现“巨奖” 将计就计反忽悠骗子老人取件发现“巨奖”");
这个Runnable会被添加到一个顺序执行的UI事件队列,等执行到里面的代码时,View已经完成了measure和layout等一系列
初始化工作,所以可以正确获取到View的高度等信息
相关文章推荐
- Android 获取View的高度或TextView的行数, 实现自适应的textview
- 【Android】在控件、视图绘制或改变之后如何获取其部分状态和属性(比如高、宽、TextView绘制后的文字行数等)
- Android获取TextView的行数
- Android textView 获取行数
- Android 如何在textView里面获取行数
- Android获取TextView行数getLineCount()返回0
- android 获取textView的行数为0,获取控件的宽高为0的解决办法
- android获取textview的行数
- android TextView 小属性(积累)---------限制TextView行数后,文字未显示完全出现...
- Android里面从Dialog中获取返回值并写入指定TextView组件
- Android中findViewById()h获取EditText 空指针问题
- Android获取TextView的长度
- Android中如何让TextView显示指定的行数并且多出的部分显示省略号
- Android:TextView不获取焦点可以实现跑马灯的效果
- Android中获取TextView和EditText中的文本
- Android下在onCreate方法中获取TextView的高度
- 从零开始学android开发-获取TextView的值
- Android TextView的跑马灯(不获取焦点情况下也可以跑)
- Android基础教程——在TextView中显示Html 自定义标签,获取标签属性
- [项目总结]怎么获取TextView行数,为什么TextView获取行数为0?