在 Jetpack Compose 脚手架中使用抽屉时,可以使用手势来打开和关闭它。 如果脚手架内容包含 MapView,则无法水平拖动地图。而是打开了抽屉。
当水平拖动(滚动)可滚动行时,不会发生这种情况,此时不会打开抽屉。
当用户拖动地图时,如何防止抽屉打开?当其余脚手架内容被拖动时,手势应该仍然有效。
不幸的是,用 AndroidView
包裹 Row
并不能解决问题,以及使用 ModalDrawer 代替脚手架。
使用 compose rc02 和 kotlin 1.5.10 重现的代码:
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
MaterialTheme {
Scaffold(
drawerContent = {
Text("Drawer Content")
},
content = {
Column {
Text("Dragging here should open the drawer")
val mapView = rememberMapViewWithLifecycle()
AndroidView({ mapView }, Modifier.fillMaxSize())
}
}
)
}
}
}
}
函数 rememberMapViewWithLifecycle()
取自 Crane sample app。