當內部Viewpager滑動到最后時再滑動會滑動父級的ViewPager,此時我們需要重寫ViewPager讓控件滑動沖突解決
//作為子控件
private PointF curr,down;
@Override
public boolean onTouchEvent(MotionEvent ev) {
curr.x= ev.getX();
curr.y= ev.getY();
switch (ev.getAction())
{
case MotionEvent.ACTION_DOWN:
down.x=ev.getX();
down.y=ev.getY();
case MotionEvent.ACTION_MOVE:
getParent().requestDisallowInterceptTouchEvent(true);
break;
case MotionEvent.ACTION_CANCEL:
case MotionEvent.ACTION_UP:
getParent().requestDisallowInterceptTouchEvent(false);
if(curr.x==down.x && curr.y==down.y)
{
return true;
}
break;
}
return super.onTouchEvent(ev);
}
2.
//作為父控件,是否允許滾動
@Override
protected boolean canScroll(View v, boolean checkV, int dx, int x, int y) {
//驗證當前可以滾動的控件不是當前控件并且也是一個ViewPager
if(v!=this && v instanceof ViewPager)
{
return true;
}
return super.canScroll(v, checkV, dx, x, y);
}