如何更改 Jectpack Compose BasicTextField 的文本颜色?

Ami*_*mir 15 android android-jetpack-compose

我正在尝试使用BasicTextField.
默认文本颜色是黑色,我找不到任何更改文本颜色的选项。
我还需要更改文本大小、字体和其他属性。

@Composable
fun MyBasicTextField(){
    var text by remember { mutableStateOf("Hello") }
    BasicTextField(
        value = text,
        onValueChange = {
            text = it
        },
        decorationBox = { ... },
        modifier = Modifier
            .fillMaxWidth()
            .background(Color.DarkGray, CircleShape)
            .padding(10.dp)
    )
}
Run Code Online (Sandbox Code Playgroud)

Jetpack Compose 基本文本字段

如果这不可能通过BasicTextField,是否有其他方法来创建类似的视图?
我已经尝试过TextField,但存在几个问题,例如删除标签、高度、背景......

Phi*_*hov 20

你需要textStyle参数。如果您喜欢使用默认文本样式,请使用LocalTextStyle

BasicTextField(
    // ...
    textStyle = LocalTextStyle.current.copy(color = Color.White)
)
Run Code Online (Sandbox Code Playgroud)

或者您可以使用其中一种材质样式:

BasicTextField(
    // ...
    textStyle = MaterialTheme.typography.body1.copy(color = Color.White)
)
Run Code Online (Sandbox Code Playgroud)


Moo*_*sez 9

如果您想使用当前的 Material 主题的颜色以使其适应浅色和深色主题,您LocalContentColor.current也需要使用。

val localStyle = LocalTextStyle.current
val mergedStyle = localStyle.merge(TextStyle(color = LocalContentColor.current))
BasicTextField(
    textStyle = mergedStyle,
    cursorBrush = SolidColor(MaterialTheme.colorScheme.primary),
)
Run Code Online (Sandbox Code Playgroud)

您可能还想更改光标画笔的颜色,从默认的黑色颜色。经过一番挖掘,我发现TextField使用了原色(至少对于材质 3 来说)。