我正在尝试将谷歌地图实现在底部模态表单布局的内容中。问题是当我尝试在地图上拖动时,底部模态表单也会移动。我尝试寻找谷歌地图利用表单手势的解决方案,但没有成功。
我知道底部表单脚手架有禁用手势的选项,但这样就无法使用我的项目必需的遮罩颜色。
谢谢!
我知道底部表单脚手架有禁用手势的选项,但这样就无法使用我的项目必需的遮罩颜色。
谢谢!
您可以捕获指针事件,直接将滚动偏移应用于地图,然后将事件标记为已消耗,以便其不会到达父组件。
注意:这不处理捏合缩放或旋转。
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 手势?- Jetpack compose,谢谢,它起作用了。