【问题标题】:Complex click handling复杂的点击处理
【发布时间】:2021-07-07 12:15:06
【问题描述】:

我有一个自定义视图,它将其背景绘制为六边形。 我还制作了一个自定义 RecyclerView 布局管理器,以蜂窝方式处理我的自定义视图:

当单击位于视图边界内但在六边形背景之外时,我不希望单击该项目(既不显示波纹)。 很简单:覆盖视图上的dispatchTouchEvent(),如果点击发生在后台之外,则忽略该事件。

问题是,其实这个点击可能是在粉色区域,视图B接收到了,但是应该由视图A处理

我能做点什么吗?

【问题讨论】:

    标签: android onitemclicklistener


    【解决方案1】:

    我不知道您所说的“onDispatchTouchListener”是什么意思,我从未听说过,但我认为解决此问题的最简单方法是覆盖 onTouchEvent 并在您的六边形之外返回 false。

    override fun onTouchEvent(event: MotionEvent): Boolean = when {
        isInHexagon(event.x, event.y) -> super.onTouchEvent(event)
        else -> false
    }
    

    【讨论】:

    • 对不起,我的意思是“dispatchTouchEvent()”,无论如何,这是可行的,谢谢
    • 我可能会准确地说,如果您在视图上使用点击侦听器和长点击侦听器,如果操作为“ACTION_DOWN”,则返回 false。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多