Android 模拟器和 ViewPager

Android emulator and ViewPager

我将 ViewPager 用于应用程序中的向导流程,我想禁用来自任何用户输入的页面切换 (How do disable paging by swiping with finger in ViewPager but still be able to swipe programmatically?)。

最近我发现当我在模拟器中运行应用程序时,我仍然可以用PC键盘左右方向键滑动页面。

我可以禁用它吗?这是可以在真实设备上发生的真实事件吗?

嗯,我无法在模拟器上基于 ViewPager 的项目 运行 中重现您的问题,但由于您已经扩展了 ViewPager,您可以尝试重写该方法下面忽略左右按键。

未测试:

 @Override
   public boolean onKeyPreIme(int keyCode, KeyEvent event) {

      switch( keyCode ) {
         case KeyEvent.KEYCODE_DPAD_RIGHT:
         case KeyEvent.KEYCODE_DPAD_LEFT:
            return true;
      }
      return false;
   }

我想如果用户连接了物理键盘,这在硬件上是可能的。

更新

在你的扩展 class 中试试这个:

@Override
public boolean dispatchKeyEvent(KeyEvent event) {
    switch( event.getAction() ) {
        case KeyEvent.KEYCODE_DPAD_RIGHT:
        case KeyEvent.KEYCODE_DPAD_LEFT:
            return true;
    }
    return super.dispatchKeyEvent(event);
}