如何使禁用的撰写 OutlinedTextField 看起来像已启用?

Got*_*tem 4 android kotlin android-jetpack-compose

我有一个撰写 OutlinedTextField ,它不应该手动编辑,而是使用单击文本字段时发生的输入进行填充。但是将该字段设置为readOnly=true会使clickable修饰符不起作用。所以我发现的一个解决方法是将其设置为enabled=false允许可点击的工作。

OutlinedTextField(
    value = text,
    onValueChange = { text = it},
    enabled = false,
    modifier = Modifier.clickable { text= "Clicked"}
)
Run Code Online (Sandbox Code Playgroud)

如何在不设置固定颜色的情况下使其看起来好像是根据所遵循的主题启用的?

Gab*_*tti 9

您可以TextFieldDefaults.outlinedTextFieldColors在禁用颜色中应用启用颜色的相同值,而不使用硬编码值:

OutlinedTextField(
    //...
    enabled = false,
    colors = TextFieldDefaults.outlinedTextFieldColors(
        disabledTextColor = LocalContentColor.current.copy(LocalContentAlpha.current),
        backgroundColor = Color.Transparent,
        disabledBorderColor = MaterialTheme.colors.onSurface.copy(alpha = ContentAlpha.disabled),
        disabledLabelColor = MaterialTheme.colors.onSurface.copy(ContentAlpha.medium),
    )
)
Run Code Online (Sandbox Code Playgroud)