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