我有一个父级自定义RelativeLayout,可以膨胀两个ImageView:一个内容图像,右上角有一个关闭按钮。
问题:我无法同时使用内容图像功能和关闭按钮功能。
内容图像是一个自定义的ImageView子类(https://github.com/MikeOrtiz/TouchImageView的修改),它有自己的OnTouchListener,允许捏缩放,并响应通常的手势。 此OnTouchListener包含代码:
private class PrivateOnTouchListener implements OnTouchListener {
@Override
public boolean onTouch(View v, MotionEvent event) {
mScaleDetector.onTouchEvent(event);
mGestureDetector.onTouchEvent(event);
//....
return true;
现在,如果返回为true,则内容图像的缩放/手势可以正常工作,但是onClick的关闭按钮永远不会被调用,而如果它是false,则缩放/ getures不起作用,并且可以调用onClick。
我不明白为什么将事件传递给手势检测器后调用的返回函数会影响(?消耗事件)手势检测器是否有效。 是否有一种简单的方法可以确保两个子ImageView的功能,返回功能是假的,但两个探测器仍然有效?
我尝试了什么:
确保gestureDetector中的所有方法都返回false,以便不消耗该事件。 (scaleDetector不是自定义的,所以我在那里没有做同样的事情;如果你认为问题出在哪里让我知道的话)
父RelativeLayout中的onInterceptTouch方法,但我不确定我是否正确实现了
(阅读事件处理以了解其工作原理)