注:转载请注明来源!

哈哈,困扰我一周的问题终于解决了!

其实,textview自定义省略号的问题并不难解决,网上一搜就会出来一堆方法,基本都比较靠谱。

但是,我在项目中碰到的是textview与recyclerview相结合的问题,我们都知道recyclerview创建的view是复用的。

起初我给textview设置了OnGlobalLayoutListener,这个监听是在tetxview完全绘制出来之后,通过获取tetxview的linecount来设置省略号,这在一般情况下是没有问题的,但是,由于recyclerview的复用问题,导致这个监听起作用的时候,原来的view已经被其他位置的复用了,所以,你就会发现,自定义的省略号时有时无。

又尝试了复写tetxview的ondraw方法,试图在这里获取布局和linecount,可惜这里布局是null,linecount是0,又不行了。

后来又试着搜索网上有没有人类似的问题,折腾了好长时间都没有找到。

最后,经过一番研究,还是找到了一种方法,在tetxview的绘制过程中,有一个监听,可以获取到tetxview的信息。

终极代码如下:

        descrip = (TextView) itemView.findViewById(R.id.descrip); //要进行自定义的tetxviewViewTreeObserver vto = descrip.getViewTreeObserver();  //获取到观察者vto.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
​​​​​​​@Overridepublic boolean onPreDraw() {//这里获取到绘制过程中的textview行数int lineCount = descrip.getLineCount();    //此处根据你想设置的最大行数进行判断if (lineCount > 2) {int lineEndIndex = descrip.getLayout().getLineEnd(1);//这里进行自定义省略号String text = descrip.getText().subSequence(0, lineEndIndex - 3) + "...";descrip.setText(text);//达到了最大行数,停止绘制return false;}return true;//还没有达到最大行数,继续绘制}});

ps:适用于一般情况下的解决方法

还有一种解决方法比较麻烦,我没有去实验:大概意思就是根据设备宽度和文字大小,行间距,获取高度,来计算行数

private int measureTextViewHeight(String text, int textSize, int deviceWidth) {TextView textView = new TextView(getContext());textView.setText(text);textView.setTextSize(TypedValue.COMPLEX_UNIT_PX, textSize);int widthMeasureSpec = MeasureSpec.makeMeasureSpec(deviceWidth, MeasureSpec.AT_MOST);int heightMeasureSpec = MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED);textView.measure(widthMeasureSpec, heightMeasureSpec);return textView.getMeasuredHeight();}

TextView Recyclerview省略号相关相关推荐

  1. TextView显示省略号问题

    通常我们会在文字过多情况下在TextView显示省略号,代码如下 <TextView....android:ellipsize="end"android:lines=&quo ...

  2. 【TextView】Android TextView显示省略号的问题(关于TextView maxLength 和maxEms的学习)

    1.TextView的属性maxLength和maxEms 1). maxLength 作用:设置TextView 文本显示的个数 理解:把text的字符取出来,截取了指定个数个字符,然后将截取的字符 ...

  3. android TextView 设置省略号结尾

    第一种:宽度不够显示时才会在结尾添加省略号 <TextViewandroid:layout_width="30dp"android:layout_height="w ...

  4. TextView ellipsize 省略号

    在Android TextView中有个内容过长加省略号的属性,即ellipsize,用法如下: 在xml中: android:ellipsize="end" 省略号在结尾 and ...

  5. 【FastDev4Android框架开发】RecyclerView完全解析之下拉刷新与上拉加载SwipeRefreshLayout(三十一)...

    转载请标明出处: http://blog.csdn.net/developer_jiangqq/article/details/49992269 本文出自:[江清清的博客] (一).前言: [好消息] ...

  6. 【Android 应用开发】Android UI 设计之 TextView EditText 组件属性方法最详细解析

    . 作者 :万境绝尘  转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/18964835 . TextView 相关类的继承结构 ...

  7. Android开发笔记(一百二十二)循环器视图RecyclerView

    RecyclerView RecyclerView是Android在support-v7库中新推出控件,中文别名为循环器视图,它的功能非常强大,可分别实现ListView.GridView,以及瀑布流 ...

  8. Android开发之RecyclerView的交互动画(实现拖拽和删除)

    做RecyclerView做相关的动画效果的时候,用的最多的是v7包下的ItemTouchHelper类,这个类很强大,如有兴趣的童鞋可以自行翻看源码,接下来我带领大家实现RecyclerView相关 ...

  9. Android UI RecyclerView讲解

    前言 RecyclerView是Android 5.0之后推出的列表类控件,具有高度的解耦性和灵活性.通过使用合适的LayoutManager,可以实现ListView.横向ListView.Grid ...

最新文章

  1. 如何使用TensorCores优化卷积
  2. 家用笔记本电脑什么牌子好_家用直饮水机什么牌子好 家用直饮水机品牌排名...
  3. SQL Server 中常见的十张系统表
  4. 根据图片地址得到文件流
  5. 最小生成树Kruskal算法+并查集检查连通
  6. linux加protobuf变量环境,protobuf简单介绍和ubuntu 16.04环境下安装教程
  7. 【DevCloud·敏捷智库】如何利用故事点做估算
  8. PHP FTP操作类( 上传、拷贝、移动、删除文件/创建目录 )
  9. 标准C字符和字符串函数
  10. 管理感悟:就事不论事
  11. 联想键盘sk8821的Fn功能键
  12. RC电路 微分器 积分器 滤波器
  13. 火车头采集html5游戏,火车头采集网站内页URL(图文)教程!
  14. 计算机组策略主要功能,组策略的作用和功能
  15. 并查集-A Bug's Life(poj2492)
  16. 蚂蚁开源 - 聚沙成塔,相信社区的力量 | ChinaOSC
  17. 前窗玻璃膜贴了一周还有气泡_新车前挡风玻璃贴膜后有气泡几天能下去
  18. “基于485总线的评分系统”
  19. 体育、医药、股票思维导图模板
  20. jvm探秘五:Class类文件结构之属性表

热门文章

  1. java注册账号_Java实现简单登录注册账号操作
  2. mmorpg游戏设计之2D游戏地图的九宫格子
  3. 变压器绕制工艺之分布电容
  4. 缺少配色灵感,整理超全超赞的配色工具帮你
  5. 物流快递发货单接口API代码-快递100API
  6. python解析word中表格_python读取word表格
  7. 青少年编程究竟应该从什么语言学起?
  8. ngx之日志切割 、ngx信号
  9. 虚拟机与宿主机网络配置——可互通可上网
  10. 3分钟了解伺服驱动器的工作原理