重寫子pagerview的dispatchTouchEvent方法,在傳回前添加一句getParent().requestDisallowInterceptTouchEvent(true)中斷掉事件的傳遞,類如下
public class SupperViewPager extends ViewPager {
private int screenWidth;//螢幕寬度
public SupperViewPager(Context context) {
super(context);
}
public SupperViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO 自動生成的構造函數存根
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
screenWidth = MeasureSpec.getSize(widthMeasureSpec);//view測量時擷取螢幕寬度
}
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
// screenWidth = getResources().getDisplayMetrics().widthPixels;
System.out.println("螢幕寬度" + screenWidth);
/*判斷螢幕是否滿足一定條件,滿足則中斷時間
即,兩邊各留出一定寬度使靠邊滑動時可以相應父pagerview 的事件,例如左邊有側滑菜單,右邊靠邊可以滑到另一個父viewpager的下一個*/
if (ev.getRawX() > screenWidth / && ev.getRawX() < screenWidth * / ) {
getParent().requestDisallowInterceptTouchEvent(true);
}
return super.dispatchTouchEvent(ev);
}
}