rof*_*rol 29 android android-dark-theme android-darkmode
我正在关注https://developer.android.com/jetpack/compose/tutorial
和代码
@Preview(name = "Light Mode")
@Preview(name = "Dark Mode", uiMode = Configuration.UI_MODE_NIGHT_UNDEFINED, showBackground = true)
@Preview(name = "Full Preview", showSystemUi = true)
@Composable
fun DefaultPreview() {
ComposeTutorialTheme {
MessageCard(Message("Roman", "message body"))
}
}
Run Code Online (Sandbox Code Playgroud)
Ant*_*nit 45
它在教程中“有效”,因为他们使用了一个在引擎盖下Card
使用的。Surface
您看到的深色背景不是由@Preview
注释生成的,而是由Surface
简单地根据MaterialTheme
.
准系统实施Surface
:
fun Surface(
color: Color = MaterialTheme.colorScheme.surface,
) {
Box(
modifier = modifier.surface(
backgroundColor = color
),
) {
...
}
}
Run Code Online (Sandbox Code Playgroud)
Surface
还覆盖“内容颜色”
CompositionLocalProvider(
LocalContentColor provides contentColorFor(color),
) {
content()
}
Run Code Online (Sandbox Code Playgroud)
以便其中显示的文本或图标Surface
与背景颜色形成良好的对比。
您仍然需要设置MaterialTheme
以遵循黑暗主题。最后,预览可组合项看起来像这样:
@Preview
@Preview(uiMode = Configuration.UI_MODE_NIGHT_YES)
@Composable
private fun BannerPreview() {
PlaygroundTheme {
Surface {
Banner()
}
}
}
Run Code Online (Sandbox Code Playgroud)
Card
以下是当您忘记使用/Surface
或不应用isSystemInDarkTheme()
-aware时预览的外观比较MaterialTheme
:
归档时间: |
|
查看次数: |
12403 次 |
最近记录: |