我正在做一个定制的布局,在Jetpack中使用Layout
可组合来显示一天的时间线。结果看起来像谷歌的Calenar,代码类似于在那个伟大的教程中描述的:https://danielrampelt.com/blog/jetpack-compose-custom-schedule-layout-part-1/
但是,我的问题是:如何在可组合的Layout
中接收单击的(x,y)位置。通过向Layout
添加clickable
修饰符,我可以很容易地收到对placeables
子级的单击。然而,我的问题是,我是如何在孩子之间的布局空间上收到点击的位置的。
(根据前面提到的例子,这将是日期间的时间间隔。在这种情况下,我需要点击的位置,以获取信息,在哪个小时的用户点击)
我尝试在整个.clickable
可组合的Layout
上添加Layout
修饰符,但是在onClick
lambda中的布局中,没有收到(x,y)点击的位置(它的类型是() -> Unit
)
发布于 2021-12-11 21:39:45
您可以使用detectTapGestures
,它将返回偏移量:
Modifier.pointerInput(Unit) {
detectTapGestures { offset ->
}
}
如果您需要在此手势中添加连锁反应,请参见this answer。在您的示例中,每个子视图可能需要一个MutableInteractionSource
数组,父视图可能需要一个数组。
您可以在Compose documentation中找到更多自定义手势。
https://stackoverflow.com/questions/70316606
复制相似问题