要想實(shí)現(xiàn)一直循環(huán)的跑馬燈效果,需要重寫isFocused()
方法使其一直處于獲取焦點(diǎn)狀態(tài),并且onFocusChanged()
里面不能調(diào)用父類的方法,否則跑馬燈將會(huì)停止。下面是自定義的跑馬燈TextView。
public class MarqueeTextView extends AppCompatTextView {
public MarqueeTextView(Context context) {
super(context);
}
public MarqueeTextView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public MarqueeTextView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
public boolean isFocused() {
return true;
}
@Override
protected void onFocusChanged(boolean focused, int direction, Rect previouslyFocusedRect) {
super.onFocusChanged(true, direction, previouslyFocusedRect);
}
}
在XML文件中使用方法,里面的這些屬性不能缺少:
<com.gaoshijie.android.marqueetextview.MarqueeTextView
android:layout_width="200dp"
android:layout_height="wrap_content"
android:ellipsize="marquee"
android:focusable="true"
android:focusableInTouchMode="true"
android:singleLine="true"
android:marqueeRepeatLimit="marquee_forever" />