【问题标题】:Android make FAB not active to single click but active for long clickAndroid使FAB对单击无效但对长按有效
【发布时间】:2021-11-18 22:59:53
【问题描述】:

我想知道我在标题中提到的问题是否可能。我不希望浮动操作按钮变灰,因为它不会在长时间点击时处于活动状态。我希望它在 onClick 时完好无损,但对 onLongClick 作出反应。该怎么做?

FAB 位于自定义 SurfaceView 之上,因此它拦截了它所在位置的点击,但我只希望在 onLongClick 时出现这种行为,如果是简单的 onClick,我不希望它做出反应。

解决方案可以是 Java 或 Kotlin。

谢谢!

【问题讨论】:

  • 点击时什么是“完整”?什么是长按“反应”?如果您不想在点击时做某事,请不要设置点击侦听器。如果您想在长按时执行某些操作,请设置长按侦听器。
  • 是的,但是这个 FAB 位于自定义 SurfaceView 之上,因此它拦截了他所在位置的点击,但我只希望在 onLongClick 时出现这种行为,如果简单的 onClick 我不想让它反应.
  • fab.setOnClickListener(null)你能试试这个代码吗

标签: java android kotlin


【解决方案1】:

如果您的问题是您不希望 FAB 阻止点击它后面的视图,您可以使用触摸侦听器将点击事件委托给另一个视图以防止“点击”行为:

fab.setOnTouchListener { view, event ->
    surfaceView.performOnClick() // Pretend the other view was clicked
    return true // Consume event to prevent "click"
}

fab.setOnLongClickListener {
    doMoreImportantThings()
}

【讨论】:

  • 似乎合法,我会尽快检查。如果可行,那么我会将您的答案标记为已接受。谢谢!
  • 它不起作用。它与这个类的另一种用法有关:com.nambimobile.widgets.efab.ExpandableFab 或我负责支持 onTouchEvent(ev) 的有点复杂的自定义 GestureListener。但无论如何我放弃了这个FAB的想法,我会用另一种方式来做。谢谢!
猜你喜欢
  • 1970-01-01
  • 2013-01-31
  • 2012-12-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-25
  • 2018-01-15
相关资源
最近更新 更多