谷歌地图深色主题加载时仍显示白色背景问题求助
解决Google Map深色样式加载初期白屏问题
设置地图容器背景色匹配深色主题
在承载GoogleMap的容器中设置背景色为深色主题的背景色:如果是Composable,用Modifier.background(MaterialTheme.colorScheme.background);如果是XML布局,设置android:background="?android:colorBackground"。地图加载前容器会显示深色背景,替代默认的白屏。提前加载并缓存地图样式
避免在GoogleMap初始化时才加载样式资源,用remember和LaunchedEffect提前加载并缓存:val mapStyle by remember { mutableStateOf<MapStyleOptions?>(null) } LaunchedEffect(isSystemInDarkTheme()) { mapStyle = if (isSystemInDarkTheme()) { MapStyleOptions.loadRawResourceStyle(context, R.raw.maps_dark_style_json) } else null } GoogleMap( properties = MapProperties(mapStyleOptions = mapStyle) )提前加载能减少样式应用的延迟,降低白屏出现概率。
启用Google Map原生夜间模式
配合自定义JSON样式,开启地图原生夜间模式,让初始加载的瓦片更贴近深色:GoogleMap( properties = MapProperties( isNightModeEnabled = isSystemInDarkTheme(), mapStyleOptions = if (isSystemInDarkTheme()) { MapStyleOptions.loadRawResourceStyle(context, R.raw.maps_dark_style_json) } else null ) )添加加载遮罩消除闪烁
在地图加载完成前显示深色遮罩,加载完成后隐藏:val mapLoaded by remember { mutableStateOf(false) } GoogleMap( properties = MapProperties(mapStyleOptions = mapStyle), onMapLoaded = { mapLoaded = true } ) if (!mapLoaded) { Box( modifier = Modifier .matchParentSize() .background(MaterialTheme.colorScheme.background) ) }这个遮罩会完全覆盖初始白屏,直到地图加载完成。
内容的提问来源于stack exchange,提问作者NullPointerException
相关产品推荐
相关产品推荐

