在上一文 给出了 textview多行设置ellipsize="end"并不显示省略号的解决方法(当然如果不是中文 android-textview-multiline-ellipse 也是个解决方案)。上一文中通过measureText计算出最后一行的文字是否超出了显示范围,由于文字的宽度不是均匀的,所以这个方法在某些时候就会出现多一两个字或少一两个字。
下面给出第二中解决方法的主要代码:
protected void onDraw(Canvas canvas) { if (HAS_BUG && !mChecked) { mChecked = true; Layout layout = super.getLayout(); int maxLinex = mMaxLines > 0 ? mMaxLines : 1; if (layout.getLineCount() > maxLinex) { if (mELLIPSEWidth == 0) { mELLIPSEWidth = (int) getPaint().measureText(ELLIPSE_END); } mOriText = super.getText(); int width = layout.getWidth(), llw = (int) layout.getLineWidth(maxLinex-1), lci = layout.getLineEnd(maxLinex-1); if (mELLIPSEWidth + llw > width) { int spc = mELLIPSEWidth + llw - width; int w = (int) (spc / super.getTextSize()); if (spc % super.getTextSize() != 0) { ++w; } lci -= w; } super.setText(mOriText.subSequence(0, lci) + ELLIPSE_END); } } super.onDraw(canvas); }
下面是显示效果
附该控件源码。需要示例的请移步 textviewellipseendfixed
相关推荐
NULL 博文链接:https://obacow.iteye.com/blog/1679277
android:ellipsize=”end” //省略号显示在末尾 android:ellipsize=”middle” //省略号显示在中间 但是设置android:maxLines=”2″ 以后,ellipsize的值end有效,middle无效,本方法解决middle无效的问题 /** * ...
TextView限制最大行数,多出部分显示略号,ellipsize="end"失效问题解决办法
视频与票的图标跟在标题后面显示,当标题过长时icon显示到省略号…后(textview省略号显示,图标自动靠后)。 二、问题解决 TextView可以通过 android:ellipsize=end android:singleLine=true实现单行省略, 但是...
2.android:ellipsize=”end”——省略号显示在结尾 3.android:ellipsize=”middle”—-省略号显示在中间 4.android:ellipsize=”marquee”–以跑马灯的方式显示(动画横向移动) 文字左右滚动三个属性: android:...
在布局xml中设置textView的字段 android:maxLines=2 android:ellipsize=end字段之后,textview会自动压缩行数,并且对压缩掉的部分用…显示。如果不想用…而想用。。。或者… …就需要自定义这个省略号的样式,不...
本文实例讲述了Android设置TextView显示指定个数字符,超过部分显示…(省略号)的方法。分享给大家供大家参考,具体如下: 一、问题: 今天在公司遇到一个需求;TextView设置最多显示8个字符,超过部分显示…(省略号)...
有时候在ListView中显示Textview时由于长度过长而导致text会隔行显示,UI上看起来就比较的不友好。...中间的singleline设置为true,就可以实现单行,且省略号在最后,而ellipsize则是控制省略号的位置,分别有
本文实例讲述了Android开发中TextView文本过长滚动显示实现方法。分享给大家供大家参考,具体如下: 项目中在使用TextView时,总会有因要显示的内容过多而需要我们进行处理的问题。我们第一时间想到的是TextView的...
实现如下: 代码如下:<TextView android:layout_width=”fill_parent” android:layout_height=”wrap_content” android:id=”@+id/hello” android:ellipsize=”end” android:singleLine=”true”> 您可能感...
使用TextView的时候,需要长度过长自动显示省略号,android里有原生的支持,定义如下: 代码如下: <TextView android:ellipsize=”end” android:singleLine=”true”/> 一看确实可以使用,但仔细观察,发现在省略号...
android:ellipsize设置当文字过长时 该控件该如何显示 有如下值设置:”start”省略号显示在开头;”end”省略号显示在结尾;”middle”省略号显示在中间;;”marquee” 以跑马灯的方式显示 动画横向移动 好像跑马...
”end”——省略号显示在结尾;”middle”—-省略号显示在中间;”marquee” ——以跑马灯的方式显示(动画横向移动) android:freezesText设置保存文本的内容以及光标的位置。参见:这里。 android:gravity设置文本...
安卓主要依靠xml文件来布局,否则textView多的时候布局起来会比较混乱 3.android:singleLine属性为true表示文本在一行显示 android:ellipsize属性:设置当文本过长时该如何显示(显示省略号)start、end、middle...