android tv跑馬燈效果與HorizontalScrollView焦點衝突解決方案
阿新 • • 發佈:2019-01-06
我整個移動的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); } } }