Jetpack Compose - 获取自定义布局中的点击位置

PGl*_*liw 5 android kotlin android-jetpack android-jetpack-compose

我正在开发一个自定义布局,该布局使用Layout可组合项在 Jetpack Compose 中呈现一天的时间线。结果看起来像Google 的 Calenar,代码类似于那个很棒的教程中描述的代码:https://danielrampelt.com/blog/jetpack-compose-custom-schedule-layout-part-1/

然而我的问题是:我如何接收可组合项中点击的 (x, y) 位置Layout。通过Layout向.clickable​ placeables然而,我的问题是,我如何接收在孩子之间的布局空间上进行的点击的位置

(根据前面提到的示例,这将是当天时间线中约会之间的间隔。在这种情况下,我需要单击的位置来获取有关用户单击的时间的信息)

我尝试.clickable在整个Layout可组合项上添加修饰符,但我没有收到onClicklambda 布局内单击的 (x, y) 位置(其类型为() -> Unit)

Phi*_*hov 9

您可以使用detectTapGestures,它将返回偏移量:

Modifier.pointerInput(Unit) {
    detectTapGestures { offset ->

    }
}
Run Code Online (Sandbox Code Playgroud)

如果您需要为此手势添加涟漪效果,请参阅此答案。在您的情况下,您可能需要为每个子视图提供一个数组MutableInteractionSource,为父视图提供一个数组。

您可以在 Compose文档中找到更多自定义手势。