【问题标题】:Jetpack compose - How to detect tap gestures without consuming them?Jetpack compose - 如何在不消耗它们的情况下检测点击手势?
【发布时间】:2022-11-05 21:33:15
【问题描述】:

我想检测 LazyColumn 中的点击手势和项目中的长按手势:

LazyColumn(
    modifier = Modifier.pointerInput(Unit) {
        detectTapGestures(onTap = { /* do something */})
    }
) {
    items(items) {
        ListItem(
            modifier=Modifier.pointerInput(Unit) {
                detectTapGestures(onLongPress = { /* do something else */})
            }
        )
    }
}

显然 ListItem 会消耗所有的手势。 所以我的问题是如何在不消耗它们的情况下检测点击手势?

【问题讨论】:

  • 为什么不检测ListItem 上的两个手势?如果您在ListItem 上有填充或项目之间有空格,您可以检测到LazyColumn 上的点击并检测到项目上的点击并像在 LazyColumn 上一样操作,这不工作吗?您的另一个选择是通过删除特定的 upOrCancel.consume() 代码来编写 detectTapGestures
  • 这是因为我需要相对于 onTap 函数中的 LazyColumn 的偏移量。此外,我需要检测更多手势来处理 LazyColumn 的缩放。无论如何,谢谢你的建议。但据我所知,即使不消耗 up 事件,只要消耗了 down 事件,LazyColumn 也不会检测到手势。

标签: android android-jetpack-compose


【解决方案1】:

你可以使用awaitRelease,我希望问题得到解决

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-10-18
    • 2019-01-09
    • 2021-10-19
    • 2020-09-02
    • 1970-01-01
    • 1970-01-01
    • 2019-10-24
    • 1970-01-01
    相关资源
    最近更新 更多