1. 程式人生 > >遮蔽掉viewpager中按左右鍵進行切換功能

遮蔽掉viewpager中按左右鍵進行切換功能

最近,在做機頂盒的專案時用到了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;
    }