Android侧滑菜单右滑事件冲突

小新小心 Android 侧滑菜单之 D... 最后由 极客学院-媛儿 于2015年07月06日回复

  • 1 回答
  • 4.8k 浏览

代码是跟视频中一样的代码,但是再点击右滑的时候事件冲突,怎么破?

老师能不能给出些思路

  • 极客学院-媛儿 2015年07月06日 回答 #1楼
  • SwipeBackLayout向右滑动关闭当前Activity,SlidingMenu向右滑动则是打开menu部分。

      在同一个Activity中,当SlidingMenu处于打开状态时,此时向右滑动,事件会被SwipeBackLayout优先处理,导致屏幕上一大部分是menu,一小部分是Activity内容的时候居然是直接关闭当前Activity,显然,这不是我们愿意看到的。

      考虑到SlidingMenu和SwipeBackLayout都各自有着自己的状态,可以用这个方法处理:直接在当前Activity中重写dispatchTouchEvent,依据SlidingMenu状态设置SwipeBackLayout的可用状态。

      public boolean dispatchTouchEvent(MotionEvent ev) {
           if (menu.isMenuShowing()) {
              if (mSwipeBackLayout.getEnableGesture()) {
                   mSwipeBackLayout.setEnableGesture(false);
              }
           } else {
               if (!mSwipeBackLayout.getEnableGesture()) {
                  mSwipeBackLayout.setEnableGesture(true);
               }
           }
           return super.dispatchTouchEvent(ev);
       }

      实现的效果:当SlidingMenu处于打开状态,右滑先是相应SlidingMenu,慢慢关闭,然后再右滑时才是响应SwipeBackLayout关闭当前Activity,若SlidingMenu处于关闭状态,则直接响应SwipeBackLayout。

  • 0 评论