正如Adrian Grygutis在评论中指出的那样, in1.0.0
有TextField
一个参数colors
。您可以TextField
通过调用TextFieldDefaults.textFieldColors(...)
要更改的参数来自定义您的。
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,
...
)
为了避免在 every 中调用它TextField
,您可以MyAppTextField
为您的应用创建一个自定义,该自定义TextField
使用您的自定义TextFieldColors
作为默认参数调用默认值:
@Composable
fun MyAppTextField(
value: String,
onValueChange: (String) -> Unit,
modifier: Modifier = Modifier,
...
colors: TextFieldColors = DialogoTextFieldColors(),
) {
TextField(
value = value,
onValueChange = onValueChange,
modifier = modifier,
...
colors = colors,
)
}
这样,您只需要调用MyAppTextField
. 如果需要,这是覆盖从主题继承的颜色的好方法。