Android TextView查看更多
来源:互联网 发布:日本福岛核事故 知乎 编辑:程序博客网 时间:2024/05/22 05:17
转载请注明出处,多谢合作。
相信大家在项目中都有碰到过这么样的需求:在TextView中显示一部分文字,超过的部分用类似“点击查看更多”之类的文字代替,并且这个替代的文字可以进行点击。
这里分享的就是这么一个控件。
截图:
实际的文字是远远不止这四行的,在第四行末端,我用"...点击查看全部"的文字替换掉了第四行末端的文字,从而实现了替换的效果。
主要代码如下:
/**
* 文本宽度超出TextView的范围的具体项值
*
* @param 进行替换的提示文本的宽度
* 0表示不考虑提示文本
* @return -1 表示没有超过TextView的范围。
*/
@TargetApi(Build.VERSION_CODES.JELLY_BEAN)
private int starOverFlow(String text, float tipsWidth) {
if (TextUtils.isEmpty(text)) {
return -1;
}
text = text.trim();
TextPaint paint = getPaint();
// 文字总宽度
float width = paint.measureText(text);
float rangeWidth = 0;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
rangeWidth = getLayout().getWidth() * getMaxLines() - tipsWidth;
} else {
rangeWidth = getLayout().getWidth() * getLayout().getLineCount()
- tipsWidth;
}
if (width > rangeWidth) {
/*
* \u2026为文本超出时系统显示的省略号
*/
return paint.breakText(text, true,
rangeWidth - paint.measureText("\u2026"), null);
} else {
return -1;
}
}
/**
* 测量文字宽度
*
* @param text
* @return
*/
private float measureTextWidth(String text) {
if (TextUtils.isEmpty(text)) {
return 0;
}
TextPaint paint = getPaint();
return paint.measureText(text);
}
大致的实现思路:
首先获取控件实际能显示的宽度,然后再获取控件能显示的最大行数(因此,使用该控件得先设置MaxLines),然后再根据当前的控件的文本样式计算出文本的总宽度,再与控件能显示的文本宽度(控件宽度*显示行数)进行比较,显示文本超出控件能显示的文本宽度则进行替换,具体开始的替换位置通过TextPaint.breadText方法进行计算得出。
将替换后的文本标志为可点击的操作,借鉴了这里的代码:
http://download.csdn.net/download/jiwangkailai02/7041657
最后实现效果就是上边的截图啦~~~
代码在这里:
http://download.csdn.net/detail/frj463806056/9362351
0 0
- Android TextView查看更多
- Android 查看更多 TextView实现
- Android尾部带“查看更多”的TextView
- Android尾部带“查看更多”的TextView
- Android尾部带“查看更多”的TextView
- Android 之TextView文本折叠查看显示更多效果
- android TextView查看更多(图文混排)
- TextView的查看更多效果
- android仿淘宝下拉查看更多
- textview显示更多的
- TextView更多的属性
- 使用android SpannableStringBuilder实现图文混排,查看更多
- 使用android SpannableStringBuilder实现图文混排,查看更多
- 使用android SpannableStringBuilder实现图文混排,查看更多
- TextView显示更多的实现
- TextView显示更多和收起
- “查看更多”与“隐藏”
- 点击查看更多
- UI数据库
- 2015-12-16
- leetcode -- Simplify Path -- 字符串处理的题目
- linux中的memory management和page mapping
- h264中avc和flv数据的解析 .
- Android TextView查看更多
- Numerical Analysis - Integration - Basics
- 好书推荐--统计陷阱
- 黑马程序员_java基础_网络编程
- 算法训练 出现次数最多的整数
- mysql之事务详解
- 数据持久化初级沙盒
- 欢迎使用CSDN-markdown编辑器
- spark on yarn-kill正在跑进程