1、重写TextView
class TextViewMarquee : AppCompatTextView { constructor(context: Context?) : super(context!!) {} constructor(context: Context?, attrs: AttributeSet?) : super( context!!, attrs ) { } constructor(context: Context?, attrs: AttributeSet?, defStyleAttr: Int) : super( context!!, attrs, defStyleAttr ) { } /** * 必须重写改方法设置为true * @return Boolean */ override fun isFocused() = true }
2、布局文件中配置
<com.demo.basis.weight.TextViewMarquee android:id="@+id/mMarquee" android:layout_width="match_parent" android:layout_height="?actionBarSize" android:ellipsize="marquee" android:focusable="true" android:focusableInTouchMode="true" android:gravity="center" android:marqueeRepeatLimit="marquee_forever" android:singleLine="true" android:text="我就是一个跑马灯!!!我就是一个跑马灯!!!我就是一个跑马灯!!!我就是一个跑马灯!!!" android:textColor="@color/black" android:textSize="@dimen/sp_18" />
注:这四个方法是在xml中必须配置的
* android:ellipsize="marquee"
* android:focusable="true"
* android:focusableInTouchMode="true"
* android:gravity="center"
* android:marqueeRepeatLimit="marquee_forever"
* android:singleLine="true"
达到的效果