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 ViewTreeObserver.OnGlobalLayoutListener() {        @Override        public void onGlobalLayout() {            mTextView.setText(content);            if (mTextView.getLineCount()>maxLines){                int lineEndIndex=mTextView.getLayout().getLineEnd(maxLines-1);//一行的结束索引                 String text=content.subSequence(0,lineEndIndex-1)+"...";//返回一个新的字符串序列                mTextView.setText(text);            }else {                removeGlobalOnLayoutListener(mTextView.getViewTreeObserver(),this);            }        }    });}@SuppressWarnings("deprecation")@SuppressLint("NewApi")private void removeGlobalOnLayoutListener(ViewTreeObserver observer, ViewTreeObserver.OnGlobalLayoutListener listener){       if (observer==null)           return;    if (Build.VERSION.SDK_INT<16){        observer.removeGlobalOnLayoutListener(listener);    }else {        observer.removeOnGlobalLayoutListener(listener);    }}

更多相关文章

  1. android 虚拟键盘遮挡布局 顶起布局
  2. 强烈推荐:Android史上最强大的自定义任务软件Tasker
  3. Android系统服务-WindowManager
  4. Android(安卓)控件七 ImageView 控件
  5. Android(安卓)通知(Notification)高级用法和注意事项
  6. Android修改icon和roundIcon后,显示的图标还是默认的图片
  7. Android(安卓)应用程序权限
  8. Android(安卓)打开本地pdf文件,android 加载pdf文件
  9. [Android]为Spinner填充数据后设置默认值的问题

随机推荐

  1. Android(安卓)GWES之Android消息系统
  2. 如何跟踪调试Android的源码
  3. android编译过程详解(一)
  4. android颜色渐变的顶部标题栏
  5. android实现卸载提示
  6. android 混合开发之与js交互
  7. Android,谁动了我的内存(1)
  8. Android彻底组件化—代码和资源隔离
  9. 相对布局各种属性说明
  10. Android(安卓)高管谈 Lollipop:为何它是 A