场景: viewpager嵌套侧滑删除的listview(如SwipeMenuListView),当在滑动在SwipeMenuListView的viewpager页时,两者滑动冲突


解决:自定义listview类继承SwipeMenuListView,重写touch的各个事件,拦截父类点击事件

publicclassMySwipMenuLvextendsSwipeMenuListView{privateViewGroupparent;publicMySwipMenuLv(Contextcontext,AttributeSetattrs){super(context,attrs);}publicvoidsetNestedpParent(ViewGroupparent){this.parent=parent;}@OverridepublicbooleandispatchTouchEvent(MotionEventev){if(parent!=null){parent.requestDisallowInterceptTouchEvent(true);}returnsuper.dispatchTouchEvent(ev);}@OverridepublicbooleanonInterceptTouchEvent(MotionEventarg0){if(parent!=null){parent.requestDisallowInterceptTouchEvent(true);}returnsuper.onInterceptTouchEvent(arg0);}@OverridepublicbooleanonTouchEvent(MotionEventarg0){if(parent!=null){parent.requestDisallowInterceptTouchEvent(true);}returnsuper.onTouchEvent(arg0);}}

代码中:

通过setNestedpParent()方法传入MySwipMenuLv的父类对象(也就是viewpager)