默认情况下,Surface(color = MaterialTheme.colors.primary) 上的文本有点透明。我可以将所有文本可组合项设为 100% 不透明吗?
Text on Surface(color = MaterialTheme.colors.primary) is a little bit transparent by default. Can I make it 100% opaque for ALL Text composables?
Text()
可组合项在具有原色的表面上绘制具有一定透明度的文本:
val Purple500 = Color(0xFF6200EE)
private val LightColorPalette = lightColors(
primary = Purple500,
primaryVariant = Purple700,
secondary = Teal200
)
ColorsTestTheme {
// A surface container using the 'background' color from the theme
Surface(color = MaterialTheme.colors.primary) {
Column {
Text("Android", fontSize = 55.sp)
Text("Android", color = Color.White, fontSize = 55.sp)
}
}
}
我可以将 ALL Text()
可组合项的文本与一些 BUILT-IN API 设为 100% 不透明吗?
通常我会得到带有不透明文本的设计模型:)
我意识到我可以像 OpaqueText(<params>, @Composable () -> Unit)
那样实现自己的可组合项
并用它来绘制不透明的文本 :)。我只是想知道是否有一种方法可以在 compose 中配置一些东西,以便使用内置的 Text()
composable 获得相同的结果。
我认为这是一个错误。我认为 LocalContentAlpha
应该根据 Material guidelines 根据当前背景进行更新。目前仅根据此设置在 MaterialTheme
中:
Dark text on light backgrounds (shown here as #000000 on #FFFFFF) applies the following opacity levels: High-emphasis text has an opacity of 87%
作为 tmp 修复,要覆盖此行为,您可以为您的应用程序的一部分提供 [=11=] 值和 CompositionLocalProvider
,或者您可以将其嵌入到您的主题中:
@Composable
fun ColorsTestTheme(
darkTheme: Boolean = isSystemInDarkTheme(),
content: @Composable () -> Unit
) {
val colors = if (darkTheme) {
DarkThemeColors
} else {
LightThemeColors
}
MaterialTheme(
colors = colors,
typography = typography,
shapes = shapes,
) {
CompositionLocalProvider(
LocalContentAlpha provides 1f,
content = content
)
}
}
Text()
可组合项在具有原色的表面上绘制具有一定透明度的文本:
val Purple500 = Color(0xFF6200EE)
private val LightColorPalette = lightColors(
primary = Purple500,
primaryVariant = Purple700,
secondary = Teal200
)
ColorsTestTheme {
// A surface container using the 'background' color from the theme
Surface(color = MaterialTheme.colors.primary) {
Column {
Text("Android", fontSize = 55.sp)
Text("Android", color = Color.White, fontSize = 55.sp)
}
}
}
我可以将 ALL Text()
可组合项的文本与一些 BUILT-IN API 设为 100% 不透明吗?
通常我会得到带有不透明文本的设计模型:)
我意识到我可以像 OpaqueText(<params>, @Composable () -> Unit)
那样实现自己的可组合项
并用它来绘制不透明的文本 :)。我只是想知道是否有一种方法可以在 compose 中配置一些东西,以便使用内置的 Text()
composable 获得相同的结果。
我认为这是一个错误。我认为 LocalContentAlpha
应该根据 Material guidelines 根据当前背景进行更新。目前仅根据此设置在 MaterialTheme
中:
Dark text on light backgrounds (shown here as #000000 on #FFFFFF) applies the following opacity levels: High-emphasis text has an opacity of 87%
作为 tmp 修复,要覆盖此行为,您可以为您的应用程序的一部分提供 [=11=] 值和 CompositionLocalProvider
,或者您可以将其嵌入到您的主题中:
@Composable
fun ColorsTestTheme(
darkTheme: Boolean = isSystemInDarkTheme(),
content: @Composable () -> Unit
) {
val colors = if (darkTheme) {
DarkThemeColors
} else {
LightThemeColors
}
MaterialTheme(
colors = colors,
typography = typography,
shapes = shapes,
) {
CompositionLocalProvider(
LocalContentAlpha provides 1f,
content = content
)
}
}