Android “我可以禁用”吗;标签";ViewPager中的键码?

Android “我可以禁用”吗;标签";ViewPager中的键码?,android,bluetooth,android-viewpager,Android,Bluetooth,Android Viewpager,我在我的ViewPager中实现了onPageChangeListener。当我将蓝牙键盘连接到设备并按下“Tab”键时,视图寻呼机将自动切换到下一个视图 我想知道是否有任何方法可以禁用查看寻呼机的“Tab”键操作?我想要的是,当我按下键盘上的“Tab”键时,视图寻呼机不会切换到下一个视图。但当我用手指滑动时,它仍然会切换 private ViewPager.OnPageChangeListener mPageChangeListener = new ViewPager

我在我的ViewPager中实现了onPageChangeListener。当我将蓝牙键盘连接到设备并按下“Tab”键时,视图寻呼机将自动切换到下一个视图

我想知道是否有任何方法可以禁用查看寻呼机的“Tab”键操作?我想要的是,当我按下键盘上的“Tab”键时,视图寻呼机不会切换到下一个视图。但当我用手指滑动时,它仍然会切换

 private ViewPager.OnPageChangeListener mPageChangeListener =
            new ViewPager.OnPageChangeListener() {
        @Override
        public void onPageScrollStateChanged(int state) {
            if (mCurrentView != null) {
                mIsScrolling = state != ViewPager.SCROLL_STATE_IDLE;
                mCurrentView.setIsScrolling(mIsScrolling);
            }
            if (mCallback != null) {
                mCallback.onScrollStateChanged(state);
            }
        }

        @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
        }

        @Override
        public void onPageSelected(int position) {
            if (mCurrentView != null) {
                mCurrentView.setIsScrolling(false);
            }
            if (mCallback != null) {
                mCallback.showView(position);
            }
        }
    };

在查看了ViewPager的源代码之后,按TAB键时,它会按箭头滚动(焦点向右)到下一个视图。我能想到的唯一方法是创建一个自定义的viewpager,重写executeKeyEvent()函数

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 (KeyEventCompat.hasNoModifiers(event)) {
                    handled = arrowScroll(FOCUS_FORWARD);
                } else if (KeyEventCompat.hasModifiers(event, KeyEvent.META_SHIFT_ON)) {
                    handled = arrowScroll(FOCUS_BACKWARD);
                }
                break;
        }
    }
    return handled;
}
参考: