今天,讲讲如何在多行文本后显示省略号。

TextView控件有一个属性是ellipsize,指的是当文字内容长度超过TextView大小时显示问题,一般情况下我们都是用省略号表示,常用的情况有以下四种:

1,Android:ellipsize = "end"    省略号在结尾

3,android:ellipsize = "start"   省略号在开头

3,android:ellipsize = "middle"     省略号在中间

4,android:ellipsize = "marquee"  跑马灯

但是我们遇到的问题是,这几个属性一般只有在设置了android:singleline = "true"的时候才有效,此时只能显示一行文字,但是当我们的TextView要显示多行文字,比如我们设置了android:maxLines="3"时,我们肯定不能设置android:singleline = "true",此时的android:ellipsize=“end”就失去效果了。MaxLines与ellipsize=end冲突问题纠结我很久,在网上打了不少资料,加上自己工作中的实际情况,写了个工具类,测试了好几款手机都没有问题,把主要代码贴出来,请大家多指教!

 
    /**
     * 参数:maxLines 要限制的最大行数
     * 参数:content  指TextView中要显示的内容
     */
    public void setMaxEcplise(final TextView mTextView, final int maxLines, final String content) {
        ViewTreeObserver observer = mTextView.getViewTreeObserver();
        observer.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
            @Override
            public void onGlobalLayout() {
                mTextView.setText(content);
                if (mTextView.getLineCount() > maxLines) {
                    int lineEndIndex = mTextView.getLayout().getLineEnd(maxLines - 1);
                    //下面这句代码中:我在项目中用数字3发现效果不好,改成1了
                    String text = content.subSequence(0, lineEndIndex - 3) + "...";
                    mTextView.setText(text);
                }
                else {
                    removeGlobalOnLayoutListener(mTextView.getViewTreeObserver(), this);
                }
            }
        });
    }
    @SuppressWarnings("deprecation")
    @SuppressLint("NewApi")
    private void removeGlobalOnLayoutListener(ViewTreeObserver obs, OnGlobalLayoutListener listener) {
        if (obs == null)
            return;
        if (Build.VERSION.SDK_INT < 16) {
            obs.removeGlobalOnLayoutListener(listener);
        }
        else {
            obs.removeOnGlobalLayoutListener(listener);
        }
    }

以上只是相关的方法代码,传入相应的参数就可以了

这个其实很简单,只是判断文档数是否大于3行,如果大于,则只显示3行的文本,然后加入省略号。

android 决TextView中MaxLines与ellipsize=end冲突问题就讲完了。

就这么简单。



android 决TextView中MaxLines与ellipsize=end冲突问题相关推荐

  1. 关于TextView的maxLines和ellipsize属性显示不正确情况之一的解决

    前言:关于TextView的maxLines和ellipsize属性显示不正确网上有好几种情况,我这里只针对自己遇到的一种情况讨论. 下面主要说以下自己的问题即解决: 图片效果: 布局代码: < ...

  2. Android 拦截TextView中超链接点击事件

    Android 拦截TextView中超链接的点击事件 1.在xml中为TextView添加autoLink属性 <TextView...android:autoLink = "web ...

  3. android 获取布局textview,android – 获取TextView中文本的位置

    看看几个Paint方法: getTextBounds()和 measureText.我们可以使用它们来确定TextView中文本的偏移量.确定TextView中的偏移后,我们可以将其添加到TextVi ...

  4. Android中设置字体居中,【Android】TextView中不同大小字体如何上下垂直居中?

    前言 在客户端开发中,我们往往需要对一个TextView的文字的部分内容进行特殊化处理,比如加粗.改变颜色.加链接.下划线等.iOS为我们提供了AttributedString,而Android则提供 ...

  5. android textview坐标,android – 获取TextView中文本的位置

    看看几个Paint方法: getTextBounds()和 measureText.我们可以使用它们来确定TextView中文本的偏移量.确定TextView中的偏移后,我们可以将其添加到TextVi ...

  6. Android 给TextView中的字体加上“中间线”

    大家都知道在做购物App或者购物网站的时候,商品价格往往会有一个"现价"和"原价"而原价往往会在中间加上一个黑色的横线.便于醒目客户,但是这种效果在App中应该 ...

  7. android:TextView中显示平方米符号㎡

    第一次写博客有点小激动,主要还是想把自己遇到的问题记录下来,也为了帮助到更多遇到这个问题的朋友. 正题:在TextView中显示平方米的符号即㎡ 解决过程:刚开始的时候是直接写上了m2,但始终看着不爽 ...

  8. Android 一个TextView中设置文字不同字体大小和颜色的最完整方法

    在做项目的时候,经常会遇到过一行文字有两种颜色.有时候直接会想到用多个TextView来实现.今天就介绍一下更为简单的方法,用一个TextView实现. 效果: 这几个都实现了一行字有不同颜色,还有两 ...

  9. android 设置textview中划线效果

    2019独角兽企业重金招聘Python工程师标准>>> 中划线 textview.getPaint().setFlags(Paint. STRIKE_THRU_TEXT_FLAG ) ...

最新文章

  1. 基于深度学习算法和传统立体匹配算法的双目立体视觉
  2. python能够做什么软件-python爬虫软件有哪些做的比较好的?
  3. MATLAB 基本数据类型和调用方式
  4. Linux学习之十二-Linux文件属性
  5. 接口interface修饰符相关问题总结
  6. python 基础简单猜数游戏
  7. 对话 SmartX:领跑超融合中高端市场之道——用专注加专业构筑企业云基础
  8. php遍历文件夹(获得文件名)
  9. 对服务器端接口的调用,自己手写了一个脚本,但返回信息的中文总是乱码(这个方法很不错,重要的是解决思路,寻找手写脚本与录制脚本 生成目录文件的区别)...
  10. 笔记本电脑频繁自动重启_笔记本电脑总是自动重启怎么回事
  11. 屏幕录像专家限制录像时长_屏幕录像档案已更新!
  12. python入门教材 52pj_PJzhang:python基础入门的7个疗程-five
  13. 如何提取iOS App素材
  14. 雷达感应智能化技术,让家居生活更智能,雷达传感器技术应用
  15. 服务器物理架构部署图,部署图
  16. 【STM32H7教程】第51章 STM32H7的LTDC应用之LCD汉字显示和2D图形显示
  17. ADI Blackfin DSP处理器-BF533的开发详解23:SDRAM内存的设计和自检(含源代码)
  18. iPad 使用感想 - 初体验
  19. Scikit-Learn库
  20. Xiaojie雷达之路---雷达原理(二刷)雷达接收机的噪声系数与接收机灵敏度的关系

热门文章

  1. android137 360 双击三击事件
  2. IOS线程学习(一)
  3. 摘自《解析极限编程-拥抱变化》
  4. 一个一直没想通的问题:为什么印度的软件外包能比中国强那么多?这应该是中国人的强项啊...
  5. 白居易--《祭李侍郎文》
  6. Python 的字符串转int
  7. @codeforces - 1106F@ Lunar New Year and a Recursive Sequence
  8. 六、springcloud之配置中心Config
  9. 概率检索模型:BIM+BM25+BM25F
  10. 【转】 Linux内核中读写文件数据的方法--不错