解决两侧SldingMenu+ViewPager手势冲突问题

这里SlidingMenu用的是github 的开源项目jfeinstein10/SlidingMenu ,单侧的SldingMenu配合ViewPager在demo中有解决方案。

这里通过修改一点源码解决问题。

首先找到CustomAboveView.java里的determineDrag方法,

在某个if条件里添加一个方法determineDragValid,如图


方法相关内容如下:


private boolean isLeftEnable=true;
    private boolean isRightEnable=true;

    public void setLeftEnable(boolean isLeftEnable) {
        this.isLeftEnable = isLeftEnable;
    }

    public void setRightEnable(boolean isRightEnable) {
        this.isRightEnable = isRightEnable;
    }
    private boolean determineDragValid(float dx)
    {
      return  1!=mCurItem||((dx >=0&&isLeftEnable)||(dx<=0&&isRightEnable));
    }


除了determineDragVaild ,还添加了两个set方法,这两个方法分别用来控制 启用/禁用 左/右 侧抽屉。

然后在找到SlidingMenu.java ,添加两个转发方法


public void setLeftEnable(boolean b) {
        mViewAbove.setLeftEnable(b);
    }

    public void setRightEnable(boolean b) {
        mViewAbove.setRightEnable(b);
    }


然后就可以用上面添加的方法解决冲突问题了

在ViewPager的OnPageChangeListener里面onPageSelect方法里面判断,注意在此之前要setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN)

 @Override
            public void onPageSelected(int position) {
                if (0==position)
                {
                    slidingMenu.setLeftEnable(true);
                    slidingMenu.setRightEnable(false);
                }else if (lastPosition==position)
                {
                    slidingMenu.setLeftEnable(false);
                    slidingMenu.setRightEnable(true);
                }else{
                    slidingMenu.setLeftEnable(false);
                    slidingMenu.setRightEnable(false);
                }
            }


如果是仿网易新闻布局,那么在点击抽屉菜单里的某项切换到不同栏目时,依旧会发生SlidingMenu冲突问题,这个解决方案是在每次切换Fragment时,重新设置SldingMenu 左右侧菜单状态。


如果还有其他更好的解决方法,欢迎指教。




评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值