复杂的点击处理

Complex click handling

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

我不希望在视图范围内但在六边形背景之外的情况下单击该项目(既不显示波纹)。 简单:在视图上覆盖 dispatchTouchEvent(),如果点击发生在背景之外,则忽略该事件。

问题是,事实上,这个点击可能在视图 B 收到的粉红色区域中,但应该由视图 A 处理

我能做些什么吗?

我不知道你所说的“onDispatchTouchListener”是什么意思,我从未听说过,但我认为解决这个问题的最简单方法是覆盖 onTouchEvent 和 return false当在你的六边形之外时。

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