完美解决SlidingMenu侧滑菜单与ViewPager冲突问题
2015-12-17 13:32:13  By: shinyuu

刚刚到一家新公司、公司准备启动一项目 工都名车、个人感觉可以使用SlidingMenu开源库来做首页的展示、首页难免会有广告轮播的ViewPager、发现在ViewPager上面滑动的时候SlidingMenu的菜单也被打开了、这两个侧滑整个发生了冲突、看了一下SlidingMenu的源代码发现它里面有一个ViewPagerActivity的例子、但在这个例子中、ViewPager只支持单向滑动、我们只需要稍作一点修改、即可实现双向滑动、解决SlidingMenu的冲突问题


Activity OnCreate创建Menu的代码

// configure the SlidingMenu
mLeftMenu = new SlidingMenu(this);
mLeftMenu.setMode(SlidingMenu.LEFT);
// 设置触摸屏幕的模式
mLeftMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
mLeftMenu.setShadowWidthRes(R.dimen.common_left_right_margins);
mLeftMenu.setShadowDrawable(R.drawable.shadow);

// 设置滑动菜单视图的宽度
mLeftMenu.setBehindOffsetRes(R.dimen.slidingmenu_offset);
// 设置渐入渐出效果的值
mLeftMenu.setFadeDegree(0.35f);
/**
 * SLIDING_WINDOW will include the Title/ActionBar in the content
 * section of the SlidingMenu, while SLIDING_CONTENT does not.
 */
// 把滑动菜单添加进所有的Activity中,可选值SLIDING_CONTENT , SLIDING_WINDOW
mLeftMenu.attachToActivity(this, SlidingMenu.SLIDING_CONTENT);
// 为侧滑菜单设置布局
mLeftMenu.setMenu(R.layout.leftmenu);


OnPageChangeListener代码如下

mViewPager.addOnPageChangeListener(new OnPageChangeListener() {
    public void onPageSelected(int position) {
        switch (position) {
            case 0:
                mLeftMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
                break;
            default:
                mLeftMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_MARGIN);
                break;
        }
    }

    public void onPageScrolled(int arg0, float arg1, int arg2) {}

    public void onPageScrollStateChanged(int arg0) {}
});


以上方法就是我解决在ViewPager上面滑动的时候SlidingMenu的菜单也被打开的冲突问题

若资源对你有帮助、浏览后有很大收获、不妨小额打赏我一下、你的鼓励是维持我不断写博客最大动力

想获取DD博客最新代码、你可以扫描下方的二维码、关注DD博客微信公众号(ddblogs)

或者你也可以关注我的新浪微博、了解DD博客的最新动态:DD博客官方微博(dwtedx的微博)

如对资源有任何疑问或觉得仍然有很大的改善空间、可以对该博文进行评论、希望不吝赐教

为保证及时回复、可以使用博客留言板给我留言: DD博客留言板(dwtedx的留言板)

感谢你的访问、祝你生活愉快、工作顺心、欢迎常来逛逛


快速评论


技术评论

  • 该技术还没有评论、赶快抢沙发吧...
DD记账
top
+