正如Adrian Grygutis在评论中指出的那样,在1.0.0
版本中,TextField
有一个名为 colors
的参数。您可以通过使用所需更改的参数调用 TextFieldDefaults.textFieldColors(...)
来自定义您的TextField
。
TextField(
...
colors: TextFieldColors = TextFieldDefaults.textFieldColors(textColor = Color.White),
) {
关于主题,如果你想避免每次调用:
ProvideTextStyle(TextStyle(color = Color.White)) {
TextField(
...
)
}
你可以使用自己的
TextFieldColors
设置来创建可组合对象,并将其添加为您
TextField
的参数。例如,你可以将所有颜色都设置为白色:
@Composable
fun MyAppTextFieldColors(
textColor: Color = Color.White,
disabledTextColor: Color = Color.White,
backgroundColor: Color = Color.White,
cursorColor: Color = Color.White,
errorCursorColor: Color = Color.White,
...
) = TextFieldDefaults.textFieldColors(
textColor = textColor,
disabledTextColor = disabledTextColor,
backgroundColor = backgroundColor,
cursorColor = cursorColor,
errorCursorColor = errorCursorColor,
...
)
为了避免在每个
TextField
中调用它,您可以创建一个自定义的
MyAppTextField
来调用默认的
TextField
,并将您的自定义
TextFieldColors
作为默认参数传递进去:
@Composable
fun MyAppTextField(
value: String,
onValueChange: (String) -> Unit,
modifier: Modifier = Modifier,
...
colors: TextFieldColors = MyAppTextFieldColors(),
) {
TextField(
value = value,
onValueChange = onValueChange,
modifier = modifier,
...
colors = colors,
)
}
这样,您只需要调用 MyAppTextField
。如果需要覆盖从主题继承的颜色,这是一个不错的方法。