[英]Jetpack Compose: AndroidView Color in Dark Theme
我发现我的应用程序中AndroidView
的 colors 不会随着深色主题设置而改变。 例如,我有一个 textView,当系统处于深色主题时,其 textColor 保持黑色(或灰色),导致内容难以识别。 当然,我可以为 textView 设置颜色,例如:
val textColor = if (isSystemInDarkTheme()) Color.White.toArgb() else Color.Black.toArgb()
...
TextView(context).apply {
...
setTextColor(textColor)
...
}
它工作正常,但问题是我在几个不同的屏幕上得到了这样的 textView,我不想在每个屏幕上重复上面的相同内容。 我考虑过使用CompositionLocal
,但是这样我必须在 Composable 函数之外公开类似LocalTextColor
的东西,以便由其他包中的 Composable 函数导入,并且不能调用isSystemInDarkTheme()
来知道如何设置正确的值它。 有没有比简单地在各处重复相同的代码更好的办法来解决这个问题? 非常感谢!
在您的主题中指定 colors 并从那里检索 colors。 这种方法可以轻松支持深色主题和嵌套主题。 您可以使用MaterialTheme.colors
检索提供给MaterialTheme
可组合的Colors
。
private val Yellow200 = Color(0xffffeb46)
private val Blue200 = Color(0xff91a4fc)
// ...
private val DarkColors = darkColors(
primary = Yellow200,
secondary = Blue200,
// ...
)
private val LightColors = lightColors(
primary = Yellow500,
primaryVariant = Yellow400,
secondary = Blue700,
// ...
)
MaterialTheme(
colors = if (darkTheme) DarkColors else LightColors
) {
// app content
}
并在可组合中:
Text(
text = "Hello theming",
color = MaterialTheme.colors.primary
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.