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


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

public class MySwipMenuLv extends SwipeMenuListView{

	private ViewGroup parent;

	public MySwipMenuLv(Context context, AttributeSet attrs) {
		super(context, attrs);
	}

	 public void setNestedpParent(ViewGroup parent) {  
	        this.parent = parent;  
	    }  
	  
	    @Override  
	    public boolean dispatchTouchEvent(MotionEvent ev) {  
	        if (parent != null) {  
	            parent.requestDisallowInterceptTouchEvent(true);  
	        }  
	        return super.dispatchTouchEvent(ev);  
	    }  
	  
	    @Override  
	    public boolean onInterceptTouchEvent(MotionEvent arg0) {  
	        if (parent != null) {  
	            parent.requestDisallowInterceptTouchEvent(true);  
	        }  
	        return super.onInterceptTouchEvent(arg0);  
	    }  
	  
	    @Override  
	    public boolean onTouchEvent(MotionEvent arg0) {  
	        if (parent != null) {  
	            parent.requestDisallowInterceptTouchEvent(true);  
	        }  
	        return super.onTouchEvent(arg0);  
	    }  
}

代码中:

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

wKiom1Xbu__C5sQ1AAJNMYPiwpw365.jpg