Android 如何在textView里面获取行数
来源:互联网 发布:欧弟加入德云社 知乎 编辑:程序博客网 时间:2024/06/05 06:43
前言:项目需求里面有这个需求,就是当一个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);
0 0
- Android 如何在textView里面获取行数
- Android textView 获取行数
- Android获取TextView的行数
- Android中获取TextView行数
- android获取textview的行数
- android中获取TextView行数
- Android获取TextView行数getLineCount()返回0
- Android 在OnCreate获取需要控件的高度,宽度,textview的行数等等
- 【Android】在控件、视图绘制或改变之后如何获取其部分状态和属性(比如高、宽、TextView绘制后的文字行数等)
- TextView获取行数
- TextView获取行数
- 获取textview的行数
- TextView 获取行数
- 当datagrid里面超链接如何获取当行数据
- Android获取TextView行数方法getLineCount()返回值为0
- Android 如何获取在strings里面设置的值
- 获取TextView中text行数
- Android 获取View的高度或TextView的行数, 实现自适应的textview
- 六十四卦
- [Skill]多个开源项目Bintray一键发布环境部署
- Freemarker循环list
- android studio开发<十三> 导出Jar包并在unity3d中使用
- 迷宫问题
- Android 如何在textView里面获取行数
- Win7 64bit +vs2013 + GTX1080 cuda theano caffe 配置详细记录
- RSA加密算法的基本流程
- JSON与XML的区别比较
- 图像识别(0)——终于进入“正轨”
- Android 和 IOS 使用 jsBridge 进行交互方法
- 转发与重定向的区别
- linux ASOC(3)—— jack framwork & drv
- Linux文件存储结构,包括目录项、inode、数据块