此方法名为“内部拦截法”
故名思意父容器不拦截任何事件,所有事件都传给所需处理事件的子view,然后再由子view判断是否传回父容器等;这种方法需要重写子view的dipatchTouchEvent并配合父容器的requestDisallowInterceptTouchEvent方法才能正常工作;具体如下
public boolean dispatchTouchEvent(MotionEvent event){
switch(event.getAction()){
case MotionEvent.ACTION_DOWN:{
getParent().requestDisallowInterceptTouchEvent(true);
break;
}
case MotionEvent.ACTION_MOVE:{
if(父容器需要此类点击事件){
getParent().requestDisallowInterceptTouchEvent(false);
}
break;
}
case MotionEvent.ACTION_UP:{
getParent().requestDisallowInterceptTouchEvent(false);
break;
}
}
}