Jetpack Compose:禁用与 TextField 的交互
Jetpack Compose: Disable Interaction with TextField
有没有办法禁用 Jetpack Compose 的 TextField 的所有交互?
我的项目在 alpha08
atm 上。希望他们尽快添加一些内置的方式来执行此操作,但与此同时我一直在这样做:
val textState = remember { mutableStateOf(TextFieldValue()) }
val disabled = remember { mutableStateOf(true) }
Box {
TextField(value = textState.value, onValueChange = {
textState.value = it
})
if (disabled.value) {
// Set alpha(0f) to hide click animation
Box(modifier = Modifier.matchParentSize().alpha(0f).clickable(onClick = {}))
}
}
是的,在 TextField 上绘制一个大小相同的不可见可点击框。您可以根据需要调整 TextField 的大小,在不可见的 Box 上调用 .matchParentSize()
将使它与 TextField 匹配,因为它们是父 Box 中唯一的子项。
您可以通过在适当的地方设置 disabled.value = true/false
来切换禁用状态。
有了 1.0.0
,您可以使用 enabled
属性:
enabled
:控制TextField
的启用状态。当false
时,文本域将不可编辑也不可聚焦,文本域的输入将不可选择,视觉上文本域将显示为禁用UI状态
类似于:
var text by rememberSaveable { mutableStateOf("Text") }
TextField(
value = text,
onValueChange = { text = it },
enabled = false,
label = { Text("Label") },
singleLine = true
)
有没有办法禁用 Jetpack Compose 的 TextField 的所有交互?
我的项目在 alpha08
atm 上。希望他们尽快添加一些内置的方式来执行此操作,但与此同时我一直在这样做:
val textState = remember { mutableStateOf(TextFieldValue()) }
val disabled = remember { mutableStateOf(true) }
Box {
TextField(value = textState.value, onValueChange = {
textState.value = it
})
if (disabled.value) {
// Set alpha(0f) to hide click animation
Box(modifier = Modifier.matchParentSize().alpha(0f).clickable(onClick = {}))
}
}
是的,在 TextField 上绘制一个大小相同的不可见可点击框。您可以根据需要调整 TextField 的大小,在不可见的 Box 上调用 .matchParentSize()
将使它与 TextField 匹配,因为它们是父 Box 中唯一的子项。
您可以通过在适当的地方设置 disabled.value = true/false
来切换禁用状态。
有了 1.0.0
,您可以使用 enabled
属性:
enabled
:控制TextField
的启用状态。当false
时,文本域将不可编辑也不可聚焦,文本域的输入将不可选择,视觉上文本域将显示为禁用UI状态
类似于:
var text by rememberSaveable { mutableStateOf("Text") }
TextField(
value = text,
onValueChange = { text = it },
enabled = false,
label = { Text("Label") },
singleLine = true
)