2

在一个 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 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 回答