自定义 ellipsize 后缀的 TextView
左:正常的 ellipsize 效果
右:带 “>>” 后缀的 ellipsize 效果
<com.gdeer.gdtesthub.textView.EllipsizeTextViewandroid:id="@+id/tv_special"android:layout_width="58dp"android:layout_height="wrap_content"android:text="TextFragment"android:textColor="#ffffff"android:maxLines="2"android:ellipsize="end"/>
public class EllipsizeTextView extends AppCompatTextView {// 来自 android.text.TextUtilsprivate static final String ELLIPSIS_NORMAL = "\u2026"; // (…)public static final String ELLIPSIS_FILLER = "\uFEFF"; // 空白字符String suffix = ">>";public EllipsizeTextView(Context context) {super(context);}public EllipsizeTextView(Context context, AttributeSet attrs) {super(context, attrs);}public EllipsizeTextView(Context context, AttributeSet attrs, int defStyleAttr) {super(context, attrs, defStyleAttr);}@Overridepublic void setText(CharSequence text, BufferType type) {super.setText(text, type);Layout layout = getLayout();if (layout != null) {// 输入的原始文字String rawText = String.valueOf(layout.getText());Log.d("zhangjl", "rawText:" + rawText + " length:" + rawText.length());if (rawText.contains(ELLIPSIS_NORMAL)) {// 去除空白字符,TextView 自带的 ellipsize 效果就是将超出长度的字符转为空白字符String trimText = trimBlankChar(rawText);Log.d("zhangjl", "trimText:" + trimText + " length:" + trimText.length());String targetText = trimText;String resultText = "";// 去除的字符数int reduceCount = 1;while (!resultText.equals(targetText)) {targetText = rawText.subSequence(0, trimText.length() - reduceCount) + ELLIPSIS_NORMAL + suffix;Log.d("zhangjl", "targetText:" + targetText + " length:" + targetText.length() +" reduceCount:" + reduceCount);super.setText(targetText, type);layout = getLayout();resultText = trimBlankChar(String.valueOf(layout.getText()));Log.d("zhangjl", "resultText:" + resultText + " length:" + resultText.length() +" reduceCount:" + reduceCount);reduceCount++;}}}}public String trimBlankChar(String rawText) {int index = rawText.indexOf(ELLIPSIS_FILLER);String trimText = rawText;if (index > 0) {trimText = rawText.substring(0, index);}return trimText;}
}
github 地址:https://github.com/Gdeeer/MarqueeTextView
自定义 ellipsize 后缀的 TextView相关推荐
- 域名邮箱什么,如何开通自定义邮箱后缀的邮箱?
这几天收到好多朋友的私信问域名邮箱是什么邮箱,和普通的邮箱有什么区别?为什么好多人管企业邮箱叫域名邮箱,其实域名邮箱指的就是邮箱,是企业邮箱的别称,因为企业邮箱后缀是可以用公司的域名设置的,所以才有了 ...
- android音频声调,Android自定义带拼音音调Textview
本文实例为大家分享了Android自定义带拼音音调Textview的具体代码,供大家参考,具体内容如下 1.拼音textview,简单的为把拼音数组和汉字数组结合在一起多行显示 import andr ...
- 利用Qt将几张图片无损压缩成新的自定义格式后缀并能保存和打开
要使用 Qt 将几张图片无损压缩为自定义格式后缀并保存和打开,你可以这样做: 使用 Qt 的 QImage 类读取图片文件. 使用 QImage 类的 save() 方法将图片保存到一个存储图像数据的 ...
- php+redis+设置前缀,spring使用Redis自定义前缀后缀名(去掉SimpleKey []+自定义)
标签: spring中自动加上 SimpleKey [] 解决方案 一.自定义后缀名 1.定义类实现KeyGenerator接口 MyKeyGenerator package com.wbg.spri ...
- php 自定义文件后缀,自定义更改服务器asp/php/.net等文件后缀名
现在很多网站都更改了文件名后缀,比如将index.aspx改为index.do文件名,或将index.asp?id=1改为index.html?id=1,其实也没什么好处,唯一好处就是让人家不知道是什 ...
- java 自定义文件后缀名_Java 的源代码文件的扩展名是( )。_学小易找答案
[单选题]在 Java 语言中,哪一个包中的类是自动导入的?( ) [填空题]static 方法中只 能 引 用 类型的数 据 成员和 类型的成 员 方法;而 非 static 类 型 的 方 法中 ...
- 网页改成html后缀,自定义网页后缀名-网页后缀名HTML、HTM、SHTml、STHM的区别
很多网站都更改了文件名后缀,比如将index.aspx改为index.do文件名,或将index.asp?id=1改为index.html?id=1,其实也没什么好处,唯一好处就是让人家不知道是什么语 ...
- php自定义文件后缀名,显示文件扩展名 显示文件后缀名设置篇-DIV CSS网页开发准备...
显示扩展名-DIV CSS网页开发准备 一.为什么需要显示扩展名? - TOP 因为很多时候我们需要辨别文件的扩展名如是.txt..js..css..php..htm..asp..aspx等文 ...
- android自定义View-垂直滚动的TextView
其实要让TextView能够滚动,可以使用ScrollView/HorizontalScrollView或者设置ScrollingMovementMethod来实现. 点击查看:android实现Te ...
最新文章
- Go 学习笔记(33)— Go 自定义类型 type(自定义结构体、结构体初始化、结构体内嵌、自定义接口)
- 计算机安装两个键盘会怎样,外设门诊:一个键盘能否连接两个接收器?
- 在家办公的第一天,钉钉、企业微信集体“崩溃”...
- java:UDP通信
- wireshark抓包图解 TCP三次握手/四次挥手详解
- boost::sort模块实现使用最坏情况分布进行扩展排序的排序示例
- 51Nod 1043 幸运号码
- 【飞秋】使用C++语言创建Silverlight中的VisualState
- Learn the object-c on MAC(中译本: Object-C 基础教程 ) 学习笔记
- 写科研论文的高级方法学
- 空间查询时出错误 An expected Field was not found or could not be retrieved properly. [SHAPE.AREA] 问题的解决...
- Vim 多行剪切、复制和删除
- 【TensorFlow系列】【九】利用tf.py_func自定义算子
- 05.LoT.UI 前后台通用框架分解系列之——漂亮的时间选择器
- linux安装yum
- GaussDB Hash表分布列选择原则及数据倾斜检测
- phpQuery占用过多内存的解决方法
- 算法学习的一些个人心得
- Rails——migration
- 从“游击队”到“正规军”:虾神成长史
热门文章
- ACM必学 C/C++文件输入输出利器—freopen函数
- 教育网的同学有福了!!腾讯TT 4.6.1“教育网专版”发布
- 干货 | 《深度学习》手推公式笔记开源PDF下载!
- 【在线聊天】原来微信小程序也能回复Facebook主页消息!
- 手机程序设计,中英文真的要注意.
- linux 非正常关机日志,非法关机铁血教训
- 基于声网SDK的双师授课系统开发
- Jenkins集成 SonarQube
- ISIS DIS(学习笔记+实验验证)
- js的匀加速,匀减速运动