所有的view的滑动冲突都可以用如下2种方式来解决:
外部拦截法和内部拦截法
1.外部拦截法:
所谓外部拦截法是指点击事件都先经过父容器的拦截处理,如果父容器需要此事件就拦截,如果不要此事件就不拦截,外部拦截发法需要重写父容器的onInterceptTouchEvent方法,在内部做相应的拦截即可,外代码如下
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
boolean intercept = false;
int x = (int) ev.getRawX();
int y = (int) ev.getRawY();
switch (ev.getAction()) {
case MotionEvent.ACTION_DOWN:
intercept = false;
break;
case MotionEvent.ACTION_MOVE:
if (父元素需要当前事件) {
intercept = true;
} else {
intercept = false;
}
break;
case MotionEvent.ACTION_UP:
//up事件本身没有多大的意义,默认不拦截
intercept = false;
break;
default:
break;
}
return intercept;
}
,这里对上述代码在描述一下:在o