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

API 35 Android模拟器状态栏时间及状态颜色显示异常排查

问题分析与解决建议

你的问题大概率是Insets配置缺失了状态栏图标颜色的适配逻辑,而非单纯的模拟器bug。以下是具体原因和修复方案:

核心原因

Android 15(API 35)在edge-to-edge模式下,状态栏图标的颜色默认行为和预览版VanillaIceCream存在差异。你当前仅设置了windowInsetsPadding(WindowInsets.systemBars),这只会让内容避开状态栏区域,但未指定状态栏图标的明暗样式,当应用背景为白色时,浅色图标就会和背景融合,导致无法分辨。

修复步骤

你需要在Compose代码中显式控制状态栏图标的颜色模式,确保在不同背景色下图标可见:

在Compose中动态适配状态栏外观

在MainActivity的Compose代码里,添加SystemUiController逻辑,根据当前主题自动切换状态栏图标颜色:

val systemUiController = rememberSystemUiController()
val useDarkIcons = !darkTheme // 根据当前主题判断是否使用深色图标

LaunchedEffect(useDarkIcons) {
    systemUiController.setStatusBarColor(
        color = Color.Transparent, // 保持状态栏透明,与应用背景一致
        darkIcons = useDarkIcons
    )
}

将这段代码放在My_App_Theme内部、Surface之前,就能实现主题切换时自动同步状态栏图标的明暗,避免和背景冲突。

关于模拟器差异的说明

VanillaIceCream作为Android 15的早期预览版,部分系统UI的默认行为在正式API 35版本中做了调整,导致两个模拟器出现显示不一致。但核心问题还是你的配置未覆盖状态栏图标颜色的适配逻辑,补上这部分代码后,两个模拟器都能正常显示状态栏内容。

内容的提问来源于stack exchange,提问作者vinhDev3006

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 10:58:13