Android子onTouchListener禁用父onClick

时间:2017-07-28 07:30:02

标签: android event-handling parent-child onclicklistener ontouchlistener

我有一个父级自定义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方法,但我不确定我是否正确实现了

  • (阅读事件处理以了解其工作原理)

0 个答案:

没有答案