<TextView
android:padding="10dp"
android:layout_centerInParent="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:singleLine="true"
android:ellipsize="marquee"
android:focusable="true"
android:focusableInTouchMode="true"
android:marqueeRepeatLimit="marquee_forever"
android:text="跑马灯跑马灯跑马灯跑马灯跑马灯跑马灯跑马灯跑马灯" />
第一种方式 最简单 但是缺点是焦点容易被抢 导致效果失效并且一个界面只能同时生效一个跑马灯效果
public class MyTextView extends android.support.v7.widget.AppCompatTextView {
public MyTextView(Context context, AttributeSet attrs) {
super(context, attrs);
}
protected void onFocusChanged(boolean focused, int direction,
Rect previouslyFocusedRect) {
if (focused)
super.onFocusChanged(focused, direction, previouslyFocusedRect);
}
@Override
public void onWindowFocusChanged(boolean focused) {
if (focused)
super.onWindowFocusChanged(focused);
}
@Override
public boolean isFocused() {
return true;//一直返回true,假装这个控件一直获取着焦点
}
}
第二种方式 继承TextVCiew 并强制返回为获取焦点状态 缺点是部分手机上面会出现 卡顿 或者 一直重新开始 ,解决方式 在textview 外层再套一层布局即可解决 ,Android 原生就是有这种奇奇怪怪的问题
第三种方式 自定义view 这里不多做介绍 过于麻烦