有没有办法禁用ModalBottomSheetLayout的手势?- Jetpack compose

4
我正在尝试将谷歌地图实现在底部模态表单布局的内容中。问题是当我尝试在地图上拖动时,底部模态表单也会移动。我尝试寻找谷歌地图利用表单手势的解决方案,但没有成功。
我知道底部表单脚手架有禁用手势的选项,但这样就无法使用我的项目必需的遮罩颜色。
谢谢!

我认为真的没有什么方法,所有我能找到的只有这个问题:https://issuetracker.google.com/issues/242384339?pli=1。但是这只是一个hack,正如该问题的答案所指出的,您的Google地图在内部可能无法正常工作。尽管如此,在表格布局中放置地图是一个奇怪的设计决定。 - TheLuckyCoder
2个回答

0

您可以捕获指针事件,直接将滚动偏移应用于地图,然后将事件标记为已消耗,以便其不会到达父组件。

注意:这不处理捏合缩放或旋转。

val targetPosition = LatLng(SOME_LAT, SOME_LNG)
val cameraPositionState = rememberCameraPositionState {
    position = CameraPosition.fromLatLngZoom(targetPosition, 17f)
}

GoogleMap(
    modifier =
        Modifier.fillMaxWidth()
            .height(300.dp)
            .pointerInput(Unit) {
                awaitPointerEventScope {
                    while (true) {
                        awaitPointerEvent(pass = PointerEventPass.Main).changes.forEach {
                            val offset = it.positionChange()
                            cameraPositionState.move(
                                CameraUpdateFactory.scrollBy(-offset.x, -offset.y)
                            )
                            it.consume()
                        }
                    }
                }
            },
    cameraPositionState = cameraPositionState,
)

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接