复杂的点击处理

Posted

技术标签:

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

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

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

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

我能做点什么吗?

【问题讨论】:

【参考方案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。

以上是关于复杂的点击处理的主要内容,如果未能解决你的问题,请参考以下文章

小样本大概率事件的正确处理方式 - 3. 实际使用

小样本大概率事件的正确处理方式 - 3. 实际使用

hadoop 数据处理 总结

hadoop 数据处理 总结

怎么去图片里面的水印

javascript中怎么实现按钮只能点击一次?