奇葩的发现在三星S4上设置TextView的ellipsize="marquee"居然显示省略号。翻阅TextView源码发现有一段代码涉及到ViewConfiguration
if (ViewConfiguration.get(context).isFadingMarqueeEnabled()) { setHorizontalFadingEdgeEnabled(true); mMarqueeFadeMode = MARQUEE_FADE_NORMAL; } else { setHorizontalFadingEdgeEnabled(false); mMarqueeFadeMode = MARQUEE_FADE_SWITCH_SHOW_ELLIPSIS; } setEllipsize(TextUtils.TruncateAt.MARQUEE);
isFadingMarqueeEnabled函数是被google hide掉的函数,由厂商编译framework时hardcode。
ViewConfiguration的get是根据不同的density值返回单例,所以我们可以通过在activity oncreate时通过ViewConfiguration.get方法获取实例,再通过该实例反射设置ViewConfiguration的mFadingMarqueeEnabled变量为true即可修复本文开头提到的bug。
相关推荐
而设置`android:ellipsize="middle"`则期望省略号出现在文本的中间,但是当结合`android:maxLines`限制了最多显示的行数后,"middle"模式往往无法正常工作,只会显示"end"模式的效果。 为了解决这个问题,我们可以...
通过对`TextView`的`ellipsize`属性和滚动显示特性的深入了解,开发者可以更加灵活地处理文本过长的问题,不仅能够保持应用界面的整洁美观,还能提供丰富的动态显示效果,增强应用的互动性和吸引力。无论是初学者...
总的来说,通过设置TextView的`ellipsize`属性和`maxLines`(或`singleLine`)属性,可以轻松实现当文本超过设定长度时在末尾显示省略号的效果。这在界面设计中很常见,能有效控制视图的显示,保持界面整洁。
2. `ellipsize="end"`:这是最常见的设置,省略号出现在文本末尾,保留了文本的开头部分,让用户能大致了解文本内容。 3. `ellipsize="middle"`:省略号出现在文本中间,这种情况下,用户可以看到文本的开头和结尾...
android:ellipsize设置当文字过长时 该控件该如何显示 有如下值设置:”start”省略号显示在开头;”end”省略号显示在结尾;”middle”省略号显示在中间;;”marquee” 以跑马灯的方式显示 动画横向移动 好像跑马...
本文将详细讲解如何在`TextView`中解决自动换行问题,并设置超过指定行数后使用省略号。 首先,我们需要了解`TextView`的一些关键属性: 1. `android:singleLine`:此属性在API 26及以下版本可用,当设置为`true`...
3. android:ellipsize:设置当文字过长时的显示方式,例如 start 表示在开头显示省略号,end 表示在结尾显示省略号,middle 表示在中间显示省略号,marquee 表示以跑马灯方式显示。 二、文本编辑属性 1. android:...
`android:ellipsize`属性用于指定当文本超出指定行数时如何进行省略,常见的有`end`(在末尾添加省略号)和`marquee`(跑马灯效果)等。 实现TextView的展开和折叠通常有两种方法:使用内置的`android:ellipsize`...
总之,要实现TextView显示指定个数字符并添加省略号的效果,可以通过组合使用`android:maxEms`、`android:singleLine`(或`android:maxLines`)和`android:ellipsize`这三个属性。同时,了解和掌握TextView的其他...
在这里,`android:singleLine` 和 `android:maxLines="1"` 都能实现单行显示的效果,而 `android:ellipsize="end"` 是设置省略号位置的关键。 需要注意的是,如果TextView的宽度设置为 `wrap_content`,则实际显示...
例如:<TextView android:ellipsize="end" .../>这样,在文本内容超出TextView的宽度时,TextView将自动截断文本,并在尾部添加省略号。但是,这种方法只能截断文本,而不能实现文本滚动显示。 三、使用android:...
`ellipsize`有多种模式,如`start`、`middle`、`end`和`marquee`,其中`end`是最常用的,它会在文本末尾添加省略号。例如: ```xml <TextView ... android:ellipsize="end" /> ``` 然而,仅通过XML配置可能无法...
可通过`android:maxLines`限制最多显示的行数,`android:ellipsize`设置超出部分如何省略。 4. **链接文本** 可以通过`android:autoLink`属性开启对URL、电话号码、邮箱地址等的自动识别,并设置相应的点击事件。...
- 自动滚动:`android:scrollbars`属性可以开启滚动条,`android:ellipsize`属性用于处理文本超出显示范围时的省略号处理。 4. **自定义字体** - 外部字体:可以通过`android:typeface`选择系统内置的字体,或者...
- **截断显示**:`android:ellipsize`属性用于指定当文本超出边界时如何进行省略,如end、middle等。 6. **链接化文本** 使用`android:autoLink`属性可以将文本中的URL、电话号码、邮箱等自动识别为链接,也可以...
在实际应用中,开发者还需要考虑一些额外因素,比如文本的滚动速度、是否在文本静止时显示全部内容,以及在不同设备和Android版本上的兼容性问题。此外,跑马灯效果可能不会在所有设备上都表现一致,因为这依赖于...
6. **自定义Ellipsize**:`android:ellipsize`属性允许设置超出最大行数或宽度后的文本处理方式,如`end`(默认)会在末尾添加省略号,`start`在开头,`middle`在中间,`marquee`则启用跑马灯效果。 7. **设置字体...
- `middle`:省略号显示在中间。 - `marquee`:以跑马灯的方式显示(动画横向移动)。 12. **android:freezesText** - **描述**:设置是否保存文本的内容以及光标的位置。 13. **android:gravity** - **描述...
3. `android:ellipsize`:当`TextView`的文本被截断时,`ellipsize`属性决定如何显示省略号。它可以是`start`、`middle`、`end`或`marquee`,分别表示在开始、中间、结束位置添加省略号,或者开启跑马灯效果。 二、...