拖动时停止OnLongClickListener

时间:2019-11-16 07:34:49

标签: android android-view

我创建了视图,您可以在其中添加其他视图。

可以拖动此父视图(dispatchTouchEvent)。

但是当我拖动父视图时,其中包含的视图称为onLongClick。

如果您阻止ACTION_DOWN,则该屏幕不可点击,我需要它是可点击的。

如何解决?

我在单独的库中创建了View,所以旧的解决方案将无济于事。

2 个答案:

答案 0 :(得分:0)

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

  

注意:仅当触摸不松懈时才设置isDragging标志。检查草率的触摸是否具有一些阈值diffX和diffY值。如果move事件高于那些阈值,则仅设置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
}

答案 1 :(得分:0)

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