`
hemowolf
  • 浏览: 154629 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

textview多行ellipsize="end"不显示省略号的解决方法(二)

阅读更多

上一文 给出了  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

分享到:
评论

相关推荐

    textview多行ellipsize=\"end\"不显示省略号的解决方法(二)

    通过以上步骤,通常可以解决`TextView`多行`ellipsize="end"`不显示省略号的问题。如果问题依然存在,可能需要更深入地分析项目代码和所使用的库,找出具体的原因。在实际开发中,保持良好的编程习惯,对每个组件的...

    TextView限制最大行数,多出部分显示略号,ellipsize="end"失效问题解决办法

    以上就是解决`TextView`限制最大行数并显示省略号(`ellipsize="end"`)失效问题的一些方法。在实际开发中,根据项目具体情况选择合适的方法,通常能有效地解决问题。如果问题依然存在,可能需要更深入地检查布局...

    详解Android TextView属性ellipsize多行失效的解决思路

    总之,解决Android TextView的`ellipsize`在多行模式下失效的问题,需要对文本的渲染和测量有深入理解,通过自定义方法来达到预期的显示效果。同时,持续关注和研究Android系统的特性,以及不断优化代码,可以提高...

    android TextView多行文本(超过3行)使用ellipsize属性无效问题的解决方法

    然而,如果文本长度超过六行,即使设置了 `ellipsize`,由于 `TextView` 的渲染机制,省略号可能不会正确显示。在这种情况下,我们需要在Java代码中动态处理文本的显示。下面是一个示例,展示了如何监听 `TextView` ...

    Android中Textview和图片同行显示(文字超出用省略号,图片自动靠右边)

    视频与票的图标跟在标题后面显示,当标题过长时icon显示到省略号…后(textview省略号显示,图标自动靠后)。 二、问题解决 TextView可以通过 android:ellipsize=end android:singleLine=true实现单行省略, 但是...

    Android实现在TextView文字过长时省略部分或滚动显示的方法

    1. `ellipsize="start"`:省略号会出现在文本的开头,通常不常见,因为用户可能无法理解省略的内容是什么。 2. `ellipsize="end"`:这是最常见的设置,省略号出现在文本末尾,保留了文本的开头部分,让用户能大致...

    Android之TextView实现文字过长时省略部分或者滚动显示

    2. **`android:ellipsize="end"`**:这是最常用的一种方式,当文本过长时,在文本的结尾处添加省略号,保持文本开头的完整性。 3. **`android:ellipsize="middle"`**:在这种情况下,省略号会被插入到文本的中间...

    安卓textView相关-Textview设置超出自己所设置的个数长度时多余的则显示省略号.rar

    总的来说,通过设置TextView的`ellipsize`属性和`maxLines`(或`singleLine`)属性,可以轻松实现当文本超过设定长度时在末尾显示省略号的效果。这在界面设计中很常见,能有效控制视图的显示,保持界面整洁。

    TextView文字伸缩类似于商品详情文字伸缩

    首先,我们需要理解`TextView`的基本属性,如`android:singleLine`(单行显示)、`android:maxLines`(最大行数)和`android:ellipsize`(省略号显示)。在实现伸缩效果时,`maxLines`属性尤为重要,它限制了`...

    Textview设置超出11个长度时显示省略号

    在Android开发中,`TextView` 是一个...通过以上方法,我们可以有效地在`TextView`中实现超出特定长度时显示省略号的效果。在实际项目中,根据具体需求选择合适的实现方式,既能保证用户体验,也能保持界面的美观性。

    textview 伸缩效果,可多行才显示伸缩否则隐藏伸缩

    同时,`android:ellipsize="end"`属性用于在达到最大行数时在末尾添加省略号。 至于伸缩图标的资源文件(`ic_expand_more`, `ic_expand_less`),通常可以在Material Design图标库中找到,或者自行设计。它们分别表示...

    适应多行长文本的Android TextView

    在Android开发中,`TextView`是用于展示文本的常用组件,但默认情况下,它并不支持自动适配多行显示。为了使`TextView`能够适应不同长度的文本,我们需要进行一些定制化处理,尤其是在处理长文本时,可能需要考虑...

    TextView解决自动换行问题

    3. 如果你的`TextView`是多行显示,并且需要在单行模式下显示省略号,你需要确保`android:singleLine`或`android:maxLines="1"`已经设置。 4. 为了让省略号正确显示,`TextView`的宽度需要设置为`wrap_content`或者...

    Android设置TextView显示指定个数字符,超过部分显示…(省略号)的方法

    本文实例讲述了Android设置TextView显示指定个数字符,超过部分显示…(省略号)的方法。分享给大家供大家参考,具体如下: 一、问题: 今天在公司遇到一个需求;TextView设置最多显示8个字符,超过部分显示…(省略号)...

    Android设置当TextView中的文字超过TextView的容量时用省略号代替

    有时候在ListView中显示Textview时由于长度过长而导致text会隔行显示,UI上看起来就比较的不友好。...中间的singleline设置为true,就可以实现单行,且省略号在最后,而ellipsize则是控制省略号的位置,分别有

    Android开发自定义TextView省略号样式的方法

    在某些情况下,我们可能希望限制TextView显示的文本行数,并在超出限制时使用特定的省略号样式。默认情况下,当使用`android:maxLines`和`android:ellipsize`属性时,TextView会自动处理省略号的添加。然而,如果想...

    Android ellipsize的小问题介绍

    在Android开发中,TextView是用于显示文本的基本组件,有时候我们需要限制文本显示的长度,并在超出时自动添加省略号(...)以表示内容被截断。Android系统为此提供了`ellipsize`属性来实现这一功能。然而,在实际...

    textview展开和收起

    但仍在某些旧版本API中可用)用于将`TextView`限制为单行显示,`maxLines`属性用于限制最多显示的行数,`ellipsize`属性则用于指定文本超出限制时如何处理,常见的有“end”(在末尾添加省略号),“start”(在开头...

Global site tag (gtag.js) - Google Analytics