前言
这是TextView的一种比较古老的效果,普通情况下当文字内容绘制长度超过View宽度时自动换行,设置不同的ellipsize会有不同的显示效果,本次做跑马灯效果,奈何网上的文章年代久远,加上各种抄袭,基本上很难找到靠谱的方式,这里做一下小结。
必要属性
android:ellipsize="marquee"
android:freezesText="true"
android:marqueeRepeatLimit="marquee_forever"
android:scrollHorizontally="true"
android:singleLine="true"
其他属性
android:focusableInTouchMode="true"
android:focusable="true"
网上很多文章说,需要这两个属性才能实现效果,但是就目前测试结果来看,这个属性完全不需要,甚至焦点都不要落在TextView
上。
关键点
如果要实现跑马灯效果,除了上述必要的属性,需要在代码中设置:
- 开启跑马灯
textView.isSelected = true //kotlin
textView.setSelected(true); //java
- 关闭跑马灯
textView.isSelected = false //kotlin
textView.setSelected(false); //java
小结
目前项目需求是在RecyclerView
中,将选中的item做跑马灯展示,非选中时停止,使用以上的方式就可以实现,当布局中有多个TextView
时,按照上述方法一样可行,和焦点没有关联,只需要设置isSelected
属性即可。