ViewGroup splitMotionEvents setMotionEventSplittingEnabled 失效

2016.08.04 15:41 Thu| 255 visits | Text

工作中使用了自定义的ViewGroup类,在其中有onTouchEvent的处理。

最近需要在这个类中禁用多点触摸。之前有看到用法,在布局文件中,父ViewGroup节点使用 splitMotionEvents = false 属性或者调用父ViewGroup的 setMotionEventSplittingEnabled (false) 可以禁用子view的多点触摸。
查看源码,在ViewGroup的dispatchTouchEvent方法中,也确实判断了该条件,以确定是否可以向子view传递多点触摸事件,但是事实是,禁用后,子view依然能收到MotionEvent.ACTION_POINTER_DOWN等多点触摸事件。WTF!

只能通过在其父ViewGroup中的onInterceptTouchEvent方法中,拦截多点触摸事件。

为什么禁用失效,google无解,需要仔细查看源代码才能明确原因。暂且留待有时间后分析。