复杂的点击处理
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。以上是关于复杂的点击处理的主要内容,如果未能解决你的问题,请参考以下文章