ViewPager和滑动菜单滑动传播

时间:2013-08-23 18:40:21

标签: java android android-viewpager

在Android应用中我使用左侧的滑动菜单:https://github.com/jfeinstein10/SlidingMenu

在其中一个活动中,我有一个ViewPager:

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

我从适配器在寻呼机中加载多个图像视图,以便在它们之间滚动。

但是我在滚动方面遇到了冲突。

当我向左滑动一切正常时,会显示下一个图像。

但是当我向右滑动时,滑动菜单会打开,因为它的行为。

我是否可以通过在View Viewr上滑动不会传播到滑动菜单的方式来制作它?

我试图在寻呼机的OnTouchListener中返回true,但滑动菜单仍在打开,现在滑块不再工作了。

            viewPager.setOnTouchListener(new OnTouchListener() {

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

感谢您的帮助

2 个答案:

答案 0 :(得分:4)

检查已接受的答案here

可以配置英斯坦滑动菜单,使其仅对从屏幕边缘开始的手势做出反应。这应该允许你的其他处理程序成为滑动的唯一代表,它起源于不在屏幕的最边缘的任何地方。

我相信你可以在“类BaseActivity extends SlidingFragmentActivity”中设置这些

答案 1 :(得分:1)

我有更好的解决方案:

为您设置OnTouchListener ViewPager并在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;
    }
}