bug
黑色是button,最外部的是ViewGroup,给ViewGroup设置了一个TouchDelegate以此扩大button的点击区域。但是发现点击了额外多出来的点击区域后,ViewGroup就再也响应不了点击事件了。
我一开始猜测是业务的问题,压根没想到Delegate会有坑。于是看了好久的业务,实在定位不到原因所在。
最后不得已回顾了Delegate的源码,果然有问题
入口
public boolean onTouchEvent(MotionEvent event) { final float x = event.getX(); final float y = event.getY(); final int viewFlags = mViewFlags; final int action = event.getAction(); final boolean clickable = ((viewFlags & CLICKABLE) == CLICKABLE || (viewFlags & LONG_CLICKABLE) == LONG_CLICKABLE) || (viewFlags & CONTEXT_CLICKABLE) == CONTEXT_CLICKABLE; if ((viewFlags & ENABLED_MASK) == DISABLED) { if (action == MotionEvent.ACTION_UP && (mPrivateFlags & PFLAG_PRESSED) != 0) { setPressed(false); } mPrivateFlags3 &a