【问题标题】:Jetpack Compose: Adding a character counter to BasicTextFieldJetpack Compose:向 BasicTextField 添加字符计数器
【发布时间】: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


【解决方案1】:

您可以简单地使用val charCount = value.text.count()。由于自动发生重组,它将始终是最新的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-03
    • 2021-07-07
    • 2021-08-22
    • 2020-05-30
    • 1970-01-01
    • 2023-01-07
    • 2022-11-24
    • 1970-01-01
    相关资源
    最近更新 更多