我有一个自定义ZoomableViewGroup,它覆盖onTouchEvent来处理平移/移动动作,并使用ScaleGestureDetector.SimpleOnScaleGestureListener来处理缩放手势。这个ZoomableViewGroup工作正常,直到我尝试在ViewGroup的子节点中使用onTouch。
在这个ZoomableViewGroup中,我有多个用作按钮的ImageView。我希望父母的功能优先于孩子的onTouch。就目前而言,似乎儿童ImageViews正在拦截触摸事件,而不是将它们传递给它的父母。
我想知道确保父母的触控功能能够保留其子女的触控功能的好方法。
非常感谢任何帮助或建议!
修改
你的回答非常有帮助杰森,我想我现在开始更好地理解这种情况了。我一直在搞乱我的可缩放视图组onInterceptTouchEvent方法,但我仍然有点困惑
如果我的ImageView从它的父ViewGroup收到了ACTION_CANCEL,我该如何得到相关的ACTION_UP信息?
如果我在这里解释发生了什么错误,请纠正我!再次感谢!
答案 0 :(得分:1)
基本思想是在父视图中覆盖onInterceptTouch
,并在那里提供逻辑,以确定是否将触摸传递给子视图(返回false
)或实际允许父视图截取/消耗触摸(返回true
)。您的逻辑可以是空间的(可能是父视图的边缘是特殊的,但不是内部),或者是手势(可能是水平滑动在父视图级别触发某些内容,垂直滑动在子视图级别触发某些内容,或者在您的视图中例如,简单的点击传递给子按钮,但是父手指消耗了两个手指手势。