場景: 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)