拖动时停止 OnLongClickListener

Stop OnLongClickListener while dragging

我做了我的View,你可以把其他的View放进去

这个父View可以拖动(dispatchTouchEvent)。

但是当我拖动父视图时,其中包含的视图调用了onLongClick。

如果你屏蔽ACTION_DOWN,屏幕是不可点击的,我需要它是可点击的。

如何修复?

我在单独的库中制作了视图,因此旧的解决方案无济于事。

只需创建一个布尔标志 isDragging 并在触发 ACTION_MOVE 时将标志设置为 true 并在 onLongClick 方法中检查 isDragging 是否为 false 然后只允许 longPress.And ACTION_UP 重置标志,即 isDragging = false

NOTE: set the isDragging flag only if the touch is not sloppy. to check the sloppy touch have some threshold diffX and diffY values.if the move event is above those threshold's then only set the isDragging

override fun onLongClick(v: View): Boolean {
if(v is YourView){
    if(!v.isDragging){
        val message = messages[adapterPosition]
            listener?.onLongClickMessage(message)
            setColorMessage(message, background)
            return true
            }
        }
        return false
}

我终于找到了解决这个问题的方法。 view.cancelPendingInputEvents();