左:正常的 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相关推荐

  1. 域名邮箱什么,如何开通自定义邮箱后缀的邮箱?

    这几天收到好多朋友的私信问域名邮箱是什么邮箱,和普通的邮箱有什么区别?为什么好多人管企业邮箱叫域名邮箱,其实域名邮箱指的就是邮箱,是企业邮箱的别称,因为企业邮箱后缀是可以用公司的域名设置的,所以才有了 ...

  2. android音频声调,Android自定义带拼音音调Textview

    本文实例为大家分享了Android自定义带拼音音调Textview的具体代码,供大家参考,具体内容如下 1.拼音textview,简单的为把拼音数组和汉字数组结合在一起多行显示 import andr ...

  3. 利用Qt将几张图片无损压缩成新的自定义格式后缀并能保存和打开

    要使用 Qt 将几张图片无损压缩为自定义格式后缀并保存和打开,你可以这样做: 使用 Qt 的 QImage 类读取图片文件. 使用 QImage 类的 save() 方法将图片保存到一个存储图像数据的 ...

  4. php+redis+设置前缀,spring使用Redis自定义前缀后缀名(去掉SimpleKey []+自定义)

    标签: spring中自动加上 SimpleKey [] 解决方案 一.自定义后缀名 1.定义类实现KeyGenerator接口 MyKeyGenerator package com.wbg.spri ...

  5. php 自定义文件后缀,自定义更改服务器asp/php/.net等文件后缀名

    现在很多网站都更改了文件名后缀,比如将index.aspx改为index.do文件名,或将index.asp?id=1改为index.html?id=1,其实也没什么好处,唯一好处就是让人家不知道是什 ...

  6. java 自定义文件后缀名_Java 的源代码文件的扩展名是( )。_学小易找答案

    [单选题]在 Java 语言中,哪一个包中的类是自动导入的?( ) [填空题]static 方法中只 能 引 用 类型的数 据 成员和 类型的成 员 方法;而 非 static 类 型 的 方 法中 ...

  7. 网页改成html后缀,自定义网页后缀名-网页后缀名HTML、HTM、SHTml、STHM的区别

    很多网站都更改了文件名后缀,比如将index.aspx改为index.do文件名,或将index.asp?id=1改为index.html?id=1,其实也没什么好处,唯一好处就是让人家不知道是什么语 ...

  8. php自定义文件后缀名,显示文件扩展名 显示文件后缀名设置篇-DIV CSS网页开发准备...

    显示扩展名-DIV CSS网页开发准备 一.为什么需要显示扩展名?   -   TOP 因为很多时候我们需要辨别文件的扩展名如是.txt..js..css..php..htm..asp..aspx等文 ...

  9. android自定义View-垂直滚动的TextView

    其实要让TextView能够滚动,可以使用ScrollView/HorizontalScrollView或者设置ScrollingMovementMethod来实现. 点击查看:android实现Te ...

最新文章

  1. Go 学习笔记(33)— Go 自定义类型 type(自定义结构体、结构体初始化、结构体内嵌、自定义接口)
  2. 计算机安装两个键盘会怎样,外设门诊:一个键盘能否连接两个接收器?
  3. 在家办公的第一天,钉钉、企业微信集体“崩溃”...
  4. java:UDP通信
  5. wireshark抓包图解 TCP三次握手/四次挥手详解
  6. boost::sort模块实现使用最坏情况分布进行扩展排序的排序示例
  7. 51Nod 1043 幸运号码
  8. 【飞秋】使用C++语言创建Silverlight中的VisualState
  9. Learn the object-c on MAC(中译本: Object-C 基础教程 ) 学习笔记
  10. 写科研论文的高级方法学
  11. 空间查询时出错误 An expected Field was not found or could not be retrieved properly. [SHAPE.AREA] 问题的解决...
  12. Vim 多行剪切、复制和删除
  13. 【TensorFlow系列】【九】利用tf.py_func自定义算子
  14. 05.LoT.UI 前后台通用框架分解系列之——漂亮的时间选择器
  15. linux安装yum
  16. GaussDB Hash表分布列选择原则及数据倾斜检测
  17. phpQuery占用过多内存的解决方法
  18. 算法学习的一些个人心得
  19. Rails——migration
  20. 从“游击队”到“正规军”:虾神成长史

热门文章

  1. ACM必学 C/C++文件输入输出利器—freopen函数
  2. 教育网的同学有福了!!腾讯TT 4.6.1“教育网专版”发布
  3. 干货 | 《深度学习》手推公式笔记开源PDF下载!
  4. 【在线聊天】原来微信小程序也能回复Facebook主页消息!
  5. 手机程序设计,中英文真的要注意.
  6. linux 非正常关机日志,非法关机铁血教训
  7. 基于声网SDK的双师授课系统开发
  8. Jenkins集成 SonarQube
  9. ISIS DIS(学习笔记+实验验证)
  10. js的匀加速,匀减速运动