Android 如何在textView里面获取行数
2016-10-11 18:25
477 查看
前言:项目需求里面有这个需求,就是当一个textView 框里的字符行数少于两行时,不显示展开查看更多按钮,当大于两行才显示。看起来很简单,直接先textView.setText(""");
然后再 textView.getLineCount(); 然而获取的总行数始终是0;这是为什么呢?原来 只有内部的Layout创建之后才会返回正确的行数,那怎么保证layout已经构创建了呢?看代码吧!
mGameIntroTv.setText(data.getIntro()); mGameIntroTv.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { @Override public void onGlobalLayout() { int lineCount = mGameIntroTv.getLineCount(); if (lineCount<=2){ mLookMoreTv.setVisibility(View.GONE); mLookMoreImgUp.setVisibility(View.GONE); } mGameIntroTv.getViewTreeObserver().removeOnGlobalLayoutListener(this); } });当TeXtView在绘制的时候就会回调这个方法,注意当我们得到了想要的值之后注意移除GlobalOnLayoutListener避免多余的执行,而且我的项目需求是要后面通过改变textview的高度实现平滑展开的动画。
/** * 折叠效果 */ tempHight = mTextView.getLineHeight() * mTextView.getLineCount() - startHight; //计算要展开高度 tempHight = mTextView.getLineHeight() * maxLine - startHight;//为负值,收缩的高度 Animation animation = new Animation() { //interpolatedTime 为当前动画帧对应的相对时间,值总在0-1之间 protected void applyTransformation(float interpolatedTime, Transformation t) { mTextView.setHeight((int) (startHight + tempHight * interpolatedTime));//原始长度+高度差*(从0到1的渐变)即表现为动画效果 } }; animation.setDuration(1000); mTextView.startAnimation(animation);
相关文章推荐
- 【Android】在控件、视图绘制或改变之后如何获取其部分状态和属性(比如高、宽、TextView绘制后的文字行数等)
- android TextView 如何动态获取宽度
- Android中如何自定义我们想要的控件(以可以自动获取焦点的TextView为例)
- Android获取TextView的行数
- Android中获取TextView行数
- Android 获取View的高度或TextView的行数, 实现自适应的textview
- android 如何让appwidget 里面设置TextView 滚动,android widget marquee text
- Android textView 获取行数
- Android View如何获取焦点 EditText焦点转移
- Android获取TextView行数getLineCount()返回0
- Android里面从Dialog中获取返回值并写入指定TextView组件
- android获取textview的行数
- 【Android】如何获取TextView的控件宽度以及字体宽度
- Android中如何让TextView显示指定的行数并且多出的部分显示省略号
- android 获取textView的行数为0,获取控件的宽高为0的解决办法
- 天天记录 - Android TextView setMaxLines后获取完整高度
- Android View如何获取焦点
- Android UI 如何让TextView中的文字居中显示
- Android中findViewById()h获取EditText 空指针问题
- android 获取网络数据,回传到本地用TextView显示乱码问题解决方法