需要自定义子ViewPager,重写dispatchTouchEvent方法
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
switch (ev.getAction()){
case MotionEvent.ACTION_DOWN:
getParent().requestDisallowInterceptTouchEvent(true);
startX = (int) ev.getRawX();
startY = (int) ev.getRawY();
break;
case MotionEvent.ACTION_MOVE:
int endX=(int) ev.getRawX();
int endY=(int) ev.getRawY();
if(Math.abs(endX-startX)>Math.abs(endY-startY)){//左右滑动
if(endX>startX){//右滑
if(getCurrentItem()==0){//第一个页面,需要父控件拦截
getParent().requestDisallowInterceptTouchEvent(false);
}else {
getParent().requestDisallowInterceptTouchEvent(true);
}
}else{//左滑
if(getCurrentItem()==getAdapter().getCount()-1){//最后一个页面,需要拦截
getParent().requestDisallowInterceptTouchEvent(false);
}else {
getParent().requestDisallowInterceptTouchEvent(true);
}
}
}else{//上下滑动,需要父控件拦截
getParent().requestDisallowInterceptTouchEvent(false);
}
break;
}
return super.dispatchTouchEvent(ev);
}