1.自定义一个类
import android.content.Context;
import android.graphics.Rect;
import android.text.TextUtils.TruncateAt;
import android.util.AttributeSet;
import android.widget.TextView;
public class FocusedTextView extends TextView {
// new 的时候使用
public FocusedTextView(Context context) {
this(context, null);
}
// 布局到xml中使用
public FocusedTextView(Context context, AttributeSet attrs) {
super(context, attrs);
// 单行显示
// android:singleLine="true"
setSingleLine();
// 走马灯
// android:ellipsize="marquee"
setEllipsize(TruncateAt.MARQUEE);
// 获得焦点
// android:focusable="true"
setFocusable(true);
// 获得window的焦点和事件
// android:focusableInTouchMode="true"
setFocusableInTouchMode(true);
// android:marqueeRepeatLimit="marquee_forever"
setMarqueeRepeatLimit(-1);
}
@Override
public boolean isFocused() {
return true;
}
/**
* 复写onFocusChanged方法,欺骗系统获取焦点,多个跑马灯能同时执行。(查看源码)
*/
@Override
protected void onFocusChanged(boolean focused, int direction,
Rect previouslyFocusedRect) {
if (focused) {
super.onFocusChanged(focused, direction, previouslyFocusedRect);
}
}
/**
* 复写onWindowFocusChanged方法,欺骗系统获取焦点,当前页面被弹窗遮挡的时候跑马灯任然执行。
*/
@Override
public void onWindowFocusChanged(boolean hasWindowFocus) {
if (hasWindowFocus) {
super.onWindowFocusChanged(hasWindowFocus);
}
}
}