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);         }     }
以上只是相关的方法代码,传入相应的参数就可以了。

更多相关文章

  1. mybatisplus的坑 insert标签insert into select无参数问题的解决
  2. Python技巧匿名函数、回调函数和高阶函数
  3. python list.sort()根据多个关键字排序的方法实现
  4. Android(安卓)TextView文字横向自动滚动(跑马灯)
  5. Android(安卓)显示网络图片
  6. Android(安卓)Recovery Ui 分析
  7. 在控件的任意位置显示图片
  8. android textview 中超出屏幕宽度的字符 省略号显示
  9. 在做Android中GIF遇到不能显示的问题

随机推荐

  1. Android 30月入门到精通(6) Android JNuit
  2. Android基于ProductFlavors动态配置权限
  3. CyanogenMod源码下载和编译(Android ROM
  4. Eclipse(Windowns XP)下搭建Android开发
  5. 怎样查看程序的历史运行时间?
  6. Android 新版个税计算小demo程序
  7. Android中Build Target,minSdkVersitarge
  8. view对touch事件的处理
  9. android post 提交数据
  10. [转]android 几何图形的绘制