美文网首页
RecyclerView中TextView使用marquee效果

RecyclerView中TextView使用marquee效果

作者: 见字如晤一 | 来源:发表于2020-06-10 16:57 被阅读0次

在开发过程中,发现Recyclerview中的TextView设置了跑马灯marquee效果无效,在网上查了很多资料,各说纷纭,试验后都不理想,在此做记录。

<TextView></TextView>控件,需要设置属性:

  <style name="style_white_text_48">
        <item name="android:singleLine">true</item>
        <item name="android:focusable">true</item>
        <item name="android:focusableInTouchMode">true</item>
        <item name="android:marqueeRepeatLimit">marquee_forever</item>
        <item name="android:scrollHorizontally">true</item>
        <item name="android:ellipsize">marquee</item>
    </style>

注意:1、这里使用了

<item name="android:singleLine">true</item>

使用“maxLines=1”反而没有效果,资料上查了很多说要使用maxLines的。
2、使用

<item name="android:marqueeRepeatLimit">marquee_forever</item>

默认时,跑马灯会运行三次就停了,设置“marquee_forever”会无限重复

注意:不要添加 android:selectAllOnFocus="true" ,如果添加,虽然也会有跑马灯效果,但会出现点点点

重点来了,光在xml文件里设置是没有用的,需要在RecyclerViewAdapter中,onBindViewHolder中获取到TextView时,对其进行setSelected(true)。要想TextView有跑马灯效果,这个TextView必须获取到焦点。

按照上述方法设置后,会发现还是会有个问题,必须点击一下对应的item后,跑马灯才会有效果。始终未解决,估计要自定义跑马灯通过message/handler去写跑马灯效果

相关文章