1 简介
最近在做侧滑的时候用到了SlidingMenu,在MainActivity中有个轮播图,用ViewPager实现的,结果发现ViewPager不能滑动了,ViewPager的滑动事件和SlidingMenu冲突了,然后自然想到调用Slidingmenu的addIgnoreView()方法,然而却发现并没有什么卵用,滑动事件还是冲突,于是研究了一下源码,发现是SlidingMenu的bug,然后修改后解决问题,遂著此文以记之。
2 Bug详细介绍
主界面上,如果有个ViewPager,那么侧滑菜单和ViewPager的滑动事件会冲突,也就是说向右滑动,这时候ViewPager是不翻页的,而是调出了左边的侧滑菜单。怎么办呢,一般解决办法是将调用
SlidingMenu.addIgnoreView(viewPager)
但是,如果这个ViewPager嵌套在一个ViewGroup中,那么上面这个方法就是失效了,看下面demo。
3 Bug示例
layout/activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="20dp"
android:text="滑动区域"
/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="100dp"
>
<android.support.v4.view.ViewPager
android:id="@+id/vp"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</android.support.v4.view.ViewPager>
</LinearLayout>
</LinearLayout>
侧滑菜单布局: layout/menu_left.xml