欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  技术分享

完美解决SlidingMenu侧滑菜单与ViewPager冲突问题

程序员文章站 2022-03-01 12:47:44
...

刚刚到一家新公司、公司准备启动一项目 工都名车、个人感觉可以使用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的菜单也被打开的冲突问题