TextView的展开收缩功能的实现;(及判断TextView是否超出)
2016-03-22 18:37
405 查看
1.实现代码如下:
2.注意事项:xml文件中,textview控件的 android:paddingBottom,android:paddingTop要足够大,不然会发生内容抖动现象;另外,如果文字显示需要不全用省略号显示,不要忘记添加 android:ellipsize="end"属性;
3.判断TextView的内容宽度是否超出其可用宽度的实现方法。借鉴自:http://www.hankcs.com/program/mobiledev/android-textview-determine-whether-excess-of-ellipsis.html
//textview的最大行数根据需要改动 tv.setSelected(false); tv.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { //当内容只有一行时,如果不做此拦截,会发生内容抖动现象 if(!isOverFlowed(tv)){ return; } if(tv.isSelected()){ //收起 tv.setSelected(false); tv.setMaxLines(1); } else{ //展开 tv.setMaxLines(10); tv.setSelected(true); } } });
2.注意事项:xml文件中,textview控件的 android:paddingBottom,android:paddingTop要足够大,不然会发生内容抖动现象;另外,如果文字显示需要不全用省略号显示,不要忘记添加 android:ellipsize="end"属性;
3.判断TextView的内容宽度是否超出其可用宽度的实现方法。借鉴自:http://www.hankcs.com/program/mobiledev/android-textview-determine-whether-excess-of-ellipsis.html
/** * 判断TextView的内容宽度是否超出其可用宽度 * @param tv * @return */ public static boolean isOverFlowed(TextView tv) { int availableWidth = tv.getWidth() - tv.getPaddingLeft() - tv.getPaddingRight(); Paint textViewPaint = tv.getPaint(); float textWidth = textViewPaint.measureText(tv.getText().toString()); if (textWidth > availableWidth) { return true; } else { return false; } }
相关文章推荐
- ffmpeg从rtsp抓流存flv[c# NReco.VideoConverter flv]
- eclipse使用技巧 之 一行代码写出最好的单例模式
- 在WAMPSERVER下增加多版本的PHP(PHP5.4,PHP5.6)支持
- 关于VS中MFC中CString转char *的问题
- ios linking 链接错误
- kruskal --- C++
- dubbo+spring_maven 遇到的问题 dubbojar包版本和jdk问题
- 快速线性筛法求素数
- [4245]:A Famous Music Composer
- 批处理备份SQL Server数据库~
- c++学习之:根据GetLastError()返回值获取错误信息
- visual studio 2012 配置opencv3.0.0
- 编写windows服务及其安装方法
- Ubuntu 14.04 隐藏 ibus 输入法切换状态面板
- Linux后台网络编程中select/poll/epoll的比较分析
- 上拉加载的时候 添加数据
- java中的goto,const,ttrue,false,null
- js如何判断一个对象{}是否为空对象,没有任何属性
- 如何搭建简易的Wiki系统
- Linux内核分析(五)