1. 程式人生 > >android tv跑馬燈效果與HorizontalScrollView焦點衝突解決方案

android tv跑馬燈效果與HorizontalScrollView焦點衝突解決方案

我整個移動的view是繼承了HorizontalScrollView,但是發現我遙控器向右移動的時候,view沒焦點了,我view裡面有一個跑馬燈效果,就是在有焦點的時候才出現跑馬燈,沒焦點的時候隱藏這段顯示的文字,如下就是跑馬燈的效果並解決了焦點衝突問題:

public class AutoScrollTextView extends TextView {

    public AutoScrollTextView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
init(); } public AutoScrollTextView(Context context, AttributeSet attrs) { super(context, attrs); init(); } public AutoScrollTextView(Context context) { super(context); init(); } @Override protected void onFocusChanged(boolean focused, int direction, Rect previouslyFocusedRect) { if
(focused){ super.onFocusChanged(focused, direction, previouslyFocusedRect); }else{ super.onFocusChanged(false, direction, previouslyFocusedRect); } } @Override public void onWindowFocusChanged(boolean focused) { if (focused) super.onWindowFocusChanged(focused);
} @Override public boolean isFocused() { return true; } private void init() { setEllipsize(TextUtils.TruncateAt.MARQUEE);// 對應android:ellipsize="marquee" setMarqueeRepeatLimit(-1);// 對應android:marqueeRepeatLimit="marquee_forever" setSingleLine();// 等價於setSingleLine(true} @Override public void setVisibility(int visibility) { super.setVisibility(visibility); if(visibility== View.VISIBLE){ setFocusable(true); }else if(visibility==View.INVISIBLE){ setFocusable(false); } } }
記錄下!