我正在尝试使用Jetpack Compose的TextField()
。我希望文本颜色为白色。
我发现这是工作:
ProvideTextStyle(TextStyle(color = Color.White)) {
TextField(
...
)
}
但是,我想在主题级别覆盖它,这样我就不需要重复写ProvideTextStyle
。我看到MaterialTheme
只接受以下参数:
@Composable
fun MaterialTheme(
colors: Colors = MaterialTheme.colors,
typography: Typography = MaterialTheme.typography,
shapes: Shapes = MaterialTheme.shapes,
content: @Composable () -> Unit
)
所以我不知道该怎么做。有人能帮忙吗?
- (合成版本= 1.0.0-alpha 11)*
6条答案
按热度按时间lpwwtiir1#
正如Adrian Grygutis在注解中指出的那样,在
1.0.0
中,TextField
有一个参数colors
,您可以通过调用TextFieldDefaults.textFieldColors(...)
来自定义您的TextField
。至于主题化,如果你不想每次都打电话:
您可以使用自己的
TextFieldColors
集合建立可组成的,并将它加入为TextField
中的参数。例如,您可以将所有颜色设为白色:为了避免在每个
TextField
中调用此函数,您可以为应用创建一个自定义MyAppTextField
,它调用默认的TextField
,并将自定义TextFieldColors
作为默认参数:这样的话,你只需要调用
MyAppTextField
。如果需要的话,这是一个覆盖从主题继承的颜色的好方法。pb3s4cty2#
M2
TextField
contentColor
基于LocalContentColor.current
。您可以使用CompositionLocalProvider
提供自定义的LocalContentColor
。您可以定义自定义函数,如下所示:
它可以与许多组件一起使用,例如
TextField
:8ljdwjyq3#
我想在主题级别覆盖此设置
在应用的主题组合中修改
MaterialTheme
组合的内容以包含TextStyle。现在,您提供的
TextStyle
将在应用程序主题级别使用。kpbpu0084#
您可以使用所需的
color
创建自己的TextField
小部件,并在所有地方使用它,现在开始使用
ColoredTextField
而不是TextField
,通过在Widget
中更改color
,它将应用于所有位置。pod7payv5#
在
1.0.0-beta07
中,您可以使用textStyle
属性来覆写样式,进而覆写内容色彩。另请参阅设定TextField样式。kiayqfof6#
使用您自己的
Color
对象配置来配置应用程序的MaterialTheme
,设置内容颜色参数(onPrimary
、onSecondary
等)。注意:要使字体颜色生效,必须设置主颜色(
primary
、secondary
等)。这是由于androidx.compose.material.Colors::contentColorFor
中定义的逻辑。