有什么方法可以禁用 ModalBottomSheetLayout 手势吗? - 喷气背包组合

问题描述 投票:0回答:2

我正在尝试在 modal bottom sheet layout 的内容中实现 google map 问题是当我尝试在地图上拖动时,modal bottom sheet 正在移动。我试图找到一个谷歌地图的解决方案来利用工作表的手势,但没有运气。

我知道 bottom sheet scaffold 有禁用手势的选项,但是我不能使用我的项目中必需的稀松布颜色。

谢谢!

android google-maps android-jetpack-compose bottom-sheet
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
投票
GoogleMap(
        modifier = Modifier
            .matchParentSize()
            .pointerInput(Unit) {
                detectDragGestures { _, dragAmount ->
                    cameraPositionState.move(CameraUpdateFactory.scrollBy(-dragAmount.x, -dragAmount.y))
                }
            },
    )

取决于 levi 答案有没有办法禁用 ModalBottomSheetLayout 手势? - 喷气背包组合 谢谢它的工作

© www.soinside.com 2019 - 2024. All rights reserved.