You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

谷歌地图深色主题加载时仍显示白色背景问题求助

解决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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 22:54:59