【发布时间】:2021-12-08 13:46:04
【问题描述】:
我正在尝试在 BasicTextField 中添加一个字符计数器(我不能使用 TextField。它必须低于材料级别)。我在装饰器中添加了一个 BasicText,但现在每当有人更改文本时我都需要更新它。如何从 innerTextField 获取文本字符串并更新我的 BasicText?
@Composable
fun MyTextField(
value: TextFieldValue,
onValueChange: (TextFieldValue) -> Unit,
modifier: Modifier = Modifier
){
val charCount = 0 // How do I update this in onValueChange?
BasicTextField(
value = value,
onValueChange = onValueChange,
modifier = modifier,
decorationBox = { innerTextField ->
Row(
Modifier
.padding(16.dp)
) {
BasicText(text = charCount.toString())
Spacer(Modifier.width(5.dp))
innerTextField()
}
})
}
【问题讨论】:
-
即兴发挥,让
charCount成为您的mutableStateOf { 0 }remember。然后,让onValueChange参数到BasicTextField都调用您的onValueChange函数参数并根据当前文本长度更新charCount。 -
你根本不需要计数器,你总是有它
value.text.count(),它只会在文本更新时重新组合
标签: android android-jetpack-compose