2016-10-11 31 views
0

私はViewPagerをアプリケーションのウィザードフローに使用しています。私は任意のユーザ入力(How do disable paging by swiping with finger in ViewPager but still be able to swipe programmatically?)からページスイッチを無効にしたいと考えています。AndroidエミュレータとViewPager

最近私はエミュレータでアプリケーションを実行すると、PCの左右の矢印キーでページをスワイプできることを発見しました。

無効にすることはできますか?実際のデバイスで発生する可能性のある実際のイベントですか?

答えて

1

まあ、エミュレータで実行中の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; 
    } 

、ユーザが接続されている物理的なキーボードを持っている場合、私は、これはハードウェア上で可能であることを想像するだろう。

更新

あなたの拡張クラスでこれを試してみてください:

@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); 
} 
+0

ゲイリー、解決策はarrowScroll()の呼び出し前にViewPager.executeKeyEventにブレークポイントを追加してみてください –

+0

動作しません。そこに壊れている場合は、コールスタックをチェックして、イベントを無効にする最適な場所がどこにあるかを確認します。 –

+0

ありがとう!それはちょうど 'executeKeyEvent'と' DPAD_ * ' –