求大神解答自定义控件的事件分发机制问题..
我现在的需求是一个纵向手势的控件(父)里套了个横向手势的控件(子)..
当然都有触摸事件的话这样就冲突了.. 所以我重写了子控件的dispatchTouchEvent方法..
float mX ;
float mY;
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
boolean flag = super.dispatchTouchEvent(ev);
float y = ev.getY();
float x = ev.getX();
switch (ev.getAction()) {
case MotionEvent.ACTION_DOWN:
LogUtil.logi("ACTION_DOWN");
mX = x;
mY = y;
break;
case MotionEvent.ACTION_MOVE:
LogUtil.logi("ACTION_MOVE");
if (Math.abs(x - mX) < Math.abs(y - mY ) ) {
getParent().requestDisallowInterceptTouchEvent(false);
return false;
}
break;
}
// getParent().requestDisallowInterceptTouchEvent(true);
return flag;
}
这样纵向滑动的move事件就可以被放行到父控件了.. 但是问题是down事件只有一个.. 这样down就被拦截了.. 父控件没有down后续的move事件也不能处理.. 有大神能教教我这样的需求要如何实现么...