最近项目需求,需要获取Textview的行数,通过行数与TextView的maxLines进行比较来确定是否显示TextView下方的展开按钮是否显示,废话少说直接上代码,mTextView.getLineCount() ,似乎很美好,安卓有提供这个方法,但是总是返回0,这是为啥呢?官方注释如下:

/**
* Return the number of lines of text, or 0 if the internal Layout has not
* been built.
*/

也就是说只有内部的Layout创建之后才会返回正确的行数,那怎么保证layout已经构创建了呢?

最后我是这么解决的

mTextView.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {

@Override
public void onGlobalLayout() {
// TODO Auto-generated method stub
Log.e(TAG, "行数"+mTextView.getLineCount());

mTextView.getViewTreeObserver().removeGlobalOnLayoutListener(this);

if(mTextView.getLineCount()>0){

mTextView.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);

转载于:https://www.cnblogs.com/wutianlong/p/6256540.html

android获取textview的行数相关推荐

  1. android textview 获得行数,android中提前获取TextView行数

    一般情况下,TextView的行数要等到其布局完成后才能获取到,否则如果直接调用textView.getLineCount()函数获取到的结果只会为0,那能不能提前获取到TextView的行数呢,当然 ...

  2. matlab中读文件的行数_[转载]MATLAB中获取大型文本文件行数方法研究(转)

    在工作中会有很多特殊的需要,比如我现在就遇到一个需要将大型的文本格式数据文件(比如5G)读取到MATLAB中,同时进行一定的处理.由于XP的内存是绝对没有办法将5G的数据一次性加载到工作空间的,此时一 ...

  3. 【Python茴香豆系列】之 PANDAS 获取 DataFrame 的行数

    [Python茴香豆系列]之 PANDAS 获取 DataFrame 的行数 用 Python 编程,使用不同的方法来完成同一个目标,有时候是一件很有意思的事情.这让我想起鲁迅笔下的孔乙己.孔乙己对于 ...

  4. Pandas 获取 Dataframe 总的行数 和 列数

    Pandas 获取 DataFam 总的行数 和 列数 返回列数: df.shape[1] 返回行数: df.shape[0] 或者:len(df)

  5. python中获取矩阵的行数和列数

    python中如何获取矩阵的行数和列数呢? 可以通过 a.shape[0] 和 a.shape[1] 来分别获取矩阵a的行数和列数,如下: import numpy as npa = np.array ...

  6. Android TextView 是否有省略号,动态获取和设置行数

    目录 前言 一.TextView设置最大行与省略号 二.检查文本是否省略 三.实战 前言 最近在做一个效果,就是当文本显示超出2行时,文本末尾出现...(省略号),并且显示一个[展开]的按钮.点击时[ ...

  7. android 根据文本计算行数,ios 获取Text行数和每行显示的内容

    该方法主要使用了CoreText中的内容,了解更多CoreText的内容请看CoreText系列 下面是具体代码 - (NSArray *)getLinesArrayOfStringInLabel:( ...

  8. TextView限制行数,点击展开显示全部

    说明: TextView内容过长,现在要根据超过10行,就显示其只能显示10行,点击展开就显示全部. 代码: Activity代码: 1.处理TextView //内容处理tv_content.set ...

  9. Android Studio查看代码行数和删除注释空行等

    在Android Studio中: 一.删除行注释 1.ctrl+r,打开替换功能.出现下图: 2.操作如图: 3.单击上图中的第4步替换之后,我示例程序中的那个黄色注释就没了,如果想要把所有行注释都 ...

  10. 如何获取ResultSet的行数和列数

    当我们执行数据库查询返回一个ResultSet的时候,很多情况下我们需要知道这个ResultSet的大小,即它的行数和列数.我们知道它的列数可以通过resultSet.getMetaData().ge ...

最新文章

  1. java学习论坛汇总
  2. excel多个工作表求和案例
  3. 需求分析师与产品经理的区别
  4. 模拟纳指stock的小例子
  5. 个人觉得好的文章链接推荐【转载,侵权立删】
  6. haproxy+keepalived实现负载均衡及高可用
  7. 嵌入式CANopen协议从入门到落地产品(更新2021.9.8)
  8. 资源放送丨《如何从零快速搭建一整套监控体系(日志采集+主机+数据库)》PPT视频...
  9. QT每日一练day15:QColorDialog颜色对话框
  10. python 配置文件对比_Python3实现配置文件差异对比脚本
  11. 《jQuery Mobile入门经典》—— 2.2 展现CSS样式
  12. discuz uc_server 配置登录
  13. Django项目实战之用户头像上传与访问
  14. MATLAB数值计算笔记
  15. GCC编译全过程解析
  16. 【Java web】Servlet面试题
  17. php telnet 交换机,华为S2700交换机配置Telnet
  18. 旅游网-去哪儿网景点评论爬取
  19. Linux常见命令作用(持续更新中,欢迎提议支持)
  20. 信号(signal,kill,raise)

热门文章

  1. 3-8 堆栈模拟队列 (25 分)
  2. hasp运行不成功_国内首条ZA-PPV电缆成功运行50天 新电缆有啥不一样?
  3. 顺序堆栈实现学生信息管理系统
  4. 【领域适应】训练梯度反向层(gradient reversl layer, GRL)
  5. 指定LINUX内存大小,linux下内存大小、起始地址的解析与修改
  6. pyqtsignal()作用
  7. 卷积神经网络第三周作业 Autonomous driving application - Car detection - v1
  8. 卡通图像变形算法(Moving Least Squares)附源码
  9. 全卷积网络 FCN 详解(很好,详看)
  10. Python实现 N*N 乘法表