我正在尝试在 modal bottom sheet layout 的内容中实现 google map。 问题是当我尝试在地图上拖动时,modal bottom sheet 正在移动。我试图找到一个谷歌地图的解决方案来利用工作表的手势,但没有运气。
我知道 bottom sheet scaffold 有禁用手势的选项,但是我不能使用我的项目中必需的稀松布颜色。
谢谢!
可以捕获指针事件,将滚动偏移量直接应用到地图上,然后将事件标记为已消耗,这样就不会到达父组件。
注意:这不处理缩放或旋转。
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,
)
GoogleMap(
modifier = Modifier
.matchParentSize()
.pointerInput(Unit) {
detectDragGestures { _, dragAmount ->
cameraPositionState.move(CameraUpdateFactory.scrollBy(-dragAmount.x, -dragAmount.y))
}
},
)
取决于 levi 答案有没有办法禁用 ModalBottomSheetLayout 手势? - 喷气背包组合 谢谢它的工作