ViewGroup#dispatchTouchEvent(MotionEvent ev)
的默认实现是遍历它的子元素(而不是孙元素),以查找作为目标的子元素(位于点击事件点的底部)并能够接收触摸事件。如果您触摸的部分超出了Parent
的边界,即Grandparent
的唯一子元素,则它将什么也找不到。如果找不到Parent
,Parent
将永远无法查找其子元素(Children 1和Children 2
),最终将事件分派给Child 2
。Parent
的大小(作为可接受的答案),这是最简单的方法;或者您将不得不覆盖Grandparent
的ViewGroup#dispatchTouchEvent(MotionEvent ev)
方法,以进行更复杂的查找,例如查找孙元素。该方法已经相当复杂,如果有人发现了实现,请分享,因为我没有找到一个。我曾经遇到过类似的问题,通过将app:elevation="XXdp"
设置给子元素来解决了它。
setClipToPadding(false)
吗? - Samuel Eminet