完美解决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的菜单也被打开的冲突问题