2

Android アプリでは、左にスライド メニューを使用しています: https://github.com/jfeinstein10/SlidingMenu

アクティビティの 1 つの中に、ViewPager があります。

<android.support.v4.view.ViewPager
      android:id="@+id/image_pager"
      android:layout_width="match_parent"
      android:layout_height="match_parent" />

アダプターからページャーに複数の画像ビューをロードして、それらの間をスクロールします。

ただし、スクロールの競合に直面しています。

左にスワイプすると、すべて正常に動作し、次の画像が表示されます。

しかし、右にスワイプすると、彼の動作により、スライド メニューが開きます。

View Pager でのスワイプがスライド メニューに反映されないようにすることはできますか?

ページャーの OnTouchListener で true を返そうとしましたが、スライド メニューがまだ開いていて、スライダーが機能しなくなりました。

            viewPager.setOnTouchListener(new OnTouchListener() {

        @Override
        public boolean onTouch(View v, MotionEvent event) {
            // TODO Auto-generated method stub
            return true;
        }
    });

助けてくれてありがとう

4

2 に答える 2

4

ここで受け入れられた回答を確認してください

画面の端から始まるジェスチャにのみ反応するように、feinstein スライド メニューを構成できます。これにより、他のハンドラーが、画面の端以外の場所で発生したスワイプの唯一のデリゲートになることができます。

これらは「class BaseActivity extends SlidingFragmentActivity」で設定できると思います

于 2013-08-24T02:28:38.993 に答える
1

私はより良い解決策を持っています:

ViewPager の OnTouchListener を設定し、ACTION_DOWN で SlidingMenu を無効にし、ACTION_UP と ACTION_CANCEL で SlidingMenu を有効にします。

コードは次のとおりです。

ViewPager mPager;

// Find your SlidingMenu here.
SlidingMenu mSlidingMenu;

mPager.setOnTouchListener(new View.OnTouchListener() {
     @Override
     public boolean onTouch(View v, MotionEvent event) {
         switch (event.getAction()) {
              case MotionEvent.ACTION_DOWN:
                   mSlidingMenu.setSlidingEnabled(false);
                   break;
              case MotionEvent.ACTION_UP:
              case MotionEvent.ACTION_CANCEL:
                   mSlidingMenu.setSlidingEnabled(true);
                   break;
         }
         return false;
    }
}
于 2013-11-26T04:37:47.287 に答える