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

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

阅读更多

 

   textview多行设置ellipsize="end"并不显示省略号。这是android4.0以下系统的bug,google发现有个家伙写了个开源控件http://android-textview-multiline-ellipse.googlecode.com/ 号称解决该问题。但实际测试还是存在问题,只好自己另寻找解决方案。下面的代码替换掉该控件的resetText函数,几乎可实现多行显示省略号 。
	private void resetText() {
		String workingText = fullText;
		boolean ellipsized = false;
		int maxLines = this.maxLines > 0 ? this.maxLines : 1;
		if (maxLines <= getLineCount()) {
			Paint paint = getPaint();
			float mw = (getMeasuredWidth() - getPaddingLeft() - getPaddingRight())
					* maxLines;
			if (paint.measureText(workingText) > mw) {
				int ei = (int) ((mw - paint.measureText("...")) / paint
						.getTextSize()) - 1;
				if (ei < workingText.length()) {
					workingText = workingText.substring(0, ei - 1) + "...";
				}
			}
			ellipsized = true;
		}
		if (!workingText.equals(getText())) {
			programmaticChange = true;
			try {
				setText(workingText);
			} finally {
				programmaticChange = false;
			}
		}
		isStale = false;
		if (ellipsized != isEllipsized) {
			isEllipsized = ellipsized;
			for (EllipsizeListener listener : ellipsizeListeners) {
				listener.ellipsizeStateChanged(ellipsized);
			}
		}
	}

 实际这个解决方法还是有点小问题。什么问题请留意下文分解^_^。

分享到:
评论

相关推荐

    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`显示的文本长度,当文本超过设定长度时,用省略号(...)来表示内容被截断。这种效果在UI...

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

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

    适应多行长文本的Android TextView

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

    TextView解决自动换行问题

    1. `android:singleLine`:此属性在API 26及以下版本可用,当设置为`true`时,`TextView`将限制为一行显示,超出部分会被截断并显示省略号。但在API 27及以上版本,这个属性已被弃用。 2. `android:maxLines`:这个...

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

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

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

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

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

    需要注意的是,`onGlobalLayout()`可能会被多次调用,因此需要一个标志变量`isfirstRunning`来避免在不需要的时候重复处理省略号。 总之,要实现自定义TextView的省略号样式,主要步骤包括设置`maxLines`和`...

    textview展开和收起

    1. **布局设计**:在XML布局文件中,创建一个`TextView`并设置合适的`maxLines`值(例如3),同时设置`ellipsize="end"`,这样当文本超过三行时会在末尾显示省略号。然后添加一个`Button`或使用`TextView`作为可点击...

    Android ellipsize的小问题介绍

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

Global site tag (gtag.js) - Google Analytics