为TextView设置这些属性:
ellipsize = TextUtils.TruncateAt.MARQUEE
transformationMethod = SingleLineTransformationMethod.getInstance()
setHorizontallyScrolling(true)
只有在TextView得到了焦点或处于selected状态时,才会开始滚动。
为方便使用,可以继承TextView并重写isFocused()方法,让TextView认为焦点一直有获取到:
override fun isFocused() = true
默认情况下,TextView只滚动3次 。
可以修改marqueeRepeatLimit为-1,以实现无限滚动。当然,也可以指定滚动次数。
marqueeRepeatLimit = -1
TextView需要在绘制完成后,设置的文本才能滚动。
如果设置文本的操作是异步的,存在绘制完成前就设置了文本的可能,那就会出现一开始不滚动,关屏重开、弹出输入法等操作之后才开始滚动的情况。
这种情况则需要使用post来设置文本:
tv.post { tv.text = content }