TextView Recyclerview省略号相关
注:转载请注明来源!
哈哈,困扰我一周的问题终于解决了!
其实,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省略号相关相关推荐
- TextView显示省略号问题
通常我们会在文字过多情况下在TextView显示省略号,代码如下 <TextView....android:ellipsize="end"android:lines=&quo ...
- 【TextView】Android TextView显示省略号的问题(关于TextView maxLength 和maxEms的学习)
1.TextView的属性maxLength和maxEms 1). maxLength 作用:设置TextView 文本显示的个数 理解:把text的字符取出来,截取了指定个数个字符,然后将截取的字符 ...
- android TextView 设置省略号结尾
第一种:宽度不够显示时才会在结尾添加省略号 <TextViewandroid:layout_width="30dp"android:layout_height="w ...
- TextView ellipsize 省略号
在Android TextView中有个内容过长加省略号的属性,即ellipsize,用法如下: 在xml中: android:ellipsize="end" 省略号在结尾 and ...
- 【FastDev4Android框架开发】RecyclerView完全解析之下拉刷新与上拉加载SwipeRefreshLayout(三十一)...
转载请标明出处: http://blog.csdn.net/developer_jiangqq/article/details/49992269 本文出自:[江清清的博客] (一).前言: [好消息] ...
- 【Android 应用开发】Android UI 设计之 TextView EditText 组件属性方法最详细解析
. 作者 :万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/18964835 . TextView 相关类的继承结构 ...
- Android开发笔记(一百二十二)循环器视图RecyclerView
RecyclerView RecyclerView是Android在support-v7库中新推出控件,中文别名为循环器视图,它的功能非常强大,可分别实现ListView.GridView,以及瀑布流 ...
- Android开发之RecyclerView的交互动画(实现拖拽和删除)
做RecyclerView做相关的动画效果的时候,用的最多的是v7包下的ItemTouchHelper类,这个类很强大,如有兴趣的童鞋可以自行翻看源码,接下来我带领大家实现RecyclerView相关 ...
- Android UI RecyclerView讲解
前言 RecyclerView是Android 5.0之后推出的列表类控件,具有高度的解耦性和灵活性.通过使用合适的LayoutManager,可以实现ListView.横向ListView.Grid ...
最新文章
- 如何使用TensorCores优化卷积
- 家用笔记本电脑什么牌子好_家用直饮水机什么牌子好 家用直饮水机品牌排名...
- SQL Server 中常见的十张系统表
- 根据图片地址得到文件流
- 最小生成树Kruskal算法+并查集检查连通
- linux加protobuf变量环境,protobuf简单介绍和ubuntu 16.04环境下安装教程
- 【DevCloud·敏捷智库】如何利用故事点做估算
- PHP FTP操作类( 上传、拷贝、移动、删除文件/创建目录 )
- 标准C字符和字符串函数
- 管理感悟:就事不论事
- 联想键盘sk8821的Fn功能键
- RC电路 微分器 积分器 滤波器
- 火车头采集html5游戏,火车头采集网站内页URL(图文)教程!
- 计算机组策略主要功能,组策略的作用和功能
- 并查集-A Bug's Life(poj2492)
- 蚂蚁开源 - 聚沙成塔,相信社区的力量 | ChinaOSC
- 前窗玻璃膜贴了一周还有气泡_新车前挡风玻璃贴膜后有气泡几天能下去
- “基于485总线的评分系统”
- 体育、医药、股票思维导图模板
- jvm探秘五:Class类文件结构之属性表