Android Jetpack Compose Preview夜间模式预览不显示深色背景
问题根因
夜间模式预览配置的uiMode常量取值错误。当前使用的Configuration.UI_MODE_NIGHT_UNDEFINED是未指定夜间模式状态的枚举值,不会主动触发深色模式渲染,因此预览无法正常展示深色背景。
修复方法
将深色预览项的uiMode参数替换为正确的夜间模式常量Configuration.UI_MODE_NIGHT_YES即可,修正后的完整代码如下:
@Preview(name = "Light Mode") @Preview( name = "Dark Mode", uiMode = Configuration.UI_MODE_NIGHT_YES, showBackground = true ) @Preview(name = "Full Preview", showSystemUi = true) @Composable fun DefaultPreview() { ComposeTutorialTheme { MessageCard(Message("Roman", "message body")) } }
注意事项
uiMode参数常用的夜间模式相关常量取值对应效果如下:Configuration.UI_MODE_NIGHT_YES:强制预览使用深色模式Configuration.UI_MODE_NIGHT_NO:强制预览使用浅色模式Configuration.UI_MODE_NIGHT_UNDEFINED:不主动指定模式,跟随IDE预览的默认配置
- 需确认项目中自定义的
ComposeTutorialTheme已正确适配系统深色模式配置,可根据isSystemInDarkTheme()的返回值切换对应深色配色方案,否则即使uiMode配置正确也无法展示深色效果。 - 修改参数后如果预览未自动更新,点击预览面板顶部的刷新按钮重新渲染即可生效。
内容的提问来源于stack exchange,提问作者rofrol
相关产品推荐
相关产品推荐

