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
相关产品推荐
相关产品推荐

