Jetpack Compose:拖动 MapView 时脚手架抽屉会打开

qr_*_*r_3 10 android kotlin android-mapview android-jetpack android-jetpack-compose

在 Jetpack Compose 脚手架中使用抽屉时,可以使用手势打开和关闭它。如果脚手架内容包含 MapView,则无法水平拖动地图。相反,抽屉被打开。

当可滚动行水平拖动(滚动)时,这种情况不会发生,抽屉不会打开。

如何防止用户拖动地图时抽屉打开?当拖动脚手架的其余内容时,该手势应该仍然有效。

不幸的是,用 a 包裹AndroidViewRow不能解决问题,以及使用 ModalDrawer 而不是脚手架。


使用 Compose rc02 和 kotlin 1.5.10 重现的代码(编辑:使用 Compose 1.0.3 和 Kotlin 1.5.30 进行验证):

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())
                        }
                    }
                )
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

该函数rememberMapViewWithLifecycle()取自Crane 示例应用程序。

Orl*_*uez 15

当我尝试使用 Jetpack Compose 将 MapBox 集成到具有 NavigationDrawer 的应用程序时,也发生了类似的情况。我所做的是添加 Scaffold 的属性drawerGesturesEnabled = false,这样当我单击菜单图标时,NavigationDrawer 就会继续工作

如果使用drawerGesturesEnabled = scaffoldState.drawerState.isOpen可以正常关闭