遮蔽掉viewpager中按左右鍵進行切換功能
阿新 • • 發佈:2019-02-18
最近,在做機頂盒的專案時用到了viewpager,通過按左右鍵讓介面之間進行切換,不加任何處理的viewpager可以正常滑動,但是後來領導要遮蔽這個功能,試了網上好多方法都無法遮蔽左右滑動,後來看原始碼發現了這個
/** * You can call this function yourself to have the scroll view perform * scrolling from a key event, just as if the event had been dispatched to * it by the view hierarchy. * * @param event The key event to execute. * @return Return true if the event was handled, else false. */ public boolean executeKeyEvent(KeyEvent event) { boolean handled = false; if (event.getAction() == KeyEvent.ACTION_DOWN) { switch (event.getKeyCode()) { case KeyEvent.KEYCODE_DPAD_LEFT: handled = arrowScroll(FOCUS_LEFT); break; case KeyEvent.KEYCODE_DPAD_RIGHT: handled = arrowScroll(FOCUS_RIGHT); break; case KeyEvent.KEYCODE_TAB: if (Build.VERSION.SDK_INT >= 11) { // The focus finder had a bug handling FOCUS_FORWARD and FOCUS_BACKWARD // before Android 3.0. Ignore the tab key on those devices. if (KeyEventCompat.hasNoModifiers(event)) { handled = arrowScroll(FOCUS_FORWARD); } else if (KeyEventCompat.hasModifiers(event, KeyEvent.META_SHIFT_ON)) { handled = arrowScroll(FOCUS_BACKWARD); } } break; } } return handled; }
發現裡邊有控制左右鍵的程式碼,那好了,在自定義的viewpager內直接重寫該方法,讓該方法返回false就ok了
@Override
public boolean executeKeyEvent(KeyEvent event) {
//遮蔽左右滑動
return false;
}