【发布时间】:2014-12-27 18:13:52
【问题描述】:
我有一个自定义 ZoomableViewGroup 覆盖 onTouchEvent 来处理平移/甩动,并使用 ScaleGestureDetector.SimpleOnScaleGestureListener 来处理缩放手势。在我尝试在 ViewGroup 的子项中使用 onTouch 之前,此 ZoomableViewGroup 工作正常。
在这个 ZoomableViewGroup 中,我有多个用作按钮的 ImageView。我希望父母的功能优先于孩子的 onTouch。就目前而言,子 ImageViews 似乎正在拦截触摸事件,而不是将它们传递给它的父级。
我想知道有什么好的方法可以确保父母的触摸功能比孩子的触摸功能保留。
任何帮助或建议将不胜感激!
编辑:
您的回复对 Jason 非常有帮助,我想我现在开始更好地理解这种情况了。我一直在搞乱我的可缩放视图组 onInterceptTouchEvent 方法,但还是有点困惑
- 您在我的可缩放 ViewGroup 内的 ImageView 上触摸屏幕,
- ViewGroup.onInterceptYuchEvent 获取 ACTION_DOWN
- 如果事件是平移或缩放手势,我希望我的 ViewGroup 采取行动,因此我将为 ACTION_DOWN 返回“true”
- 看来,当我的视图组使用 ACTION_DOWN 事件时,它会发送我的 ImageView.onTouch 'ACTION_CANCEL'
- 如果前面的 ACTION_MOVE 小于 slop 值,我希望我的 ImageView.onTouch 方法响应 ACTION_UP 事件。
如果我的 ImageView 已经从其父 ViewGroup 收到 ACTION_CANCEL,它应该如何获取相关的 ACTION_UP 信息?
如果我也解释了这里发生的错误,请纠正我!再次感谢!
【问题讨论】:
-
如果您只想在触摸事件被拖过 slop 值后拦截触摸事件,那么您应该从
onInterceptTouchEvent()方法返回false,直到发生这种情况。
标签: android imageview zooming viewgroup