【问题标题】:Jetpack Compose Number Input in to TextFieldJetpack 将数字输入输入到 TextField
【发布时间】:2021-05-25 12:13:43
【问题描述】:

当键盘的 KeyboardType 设置为 KeyboardType.Number 时,我目前无法将用户输入捕获到文本字段中。

如果键盘设置为 KeyboardType.Text,Textfield 按预期更新,但是当设置为 KeyboardType.Number 时,Textfield 无法更新。

这是为什么?以及如何更改我的代码,以便在单击文本字段时显示数字键盘,并且当按下数字时,在文本字段中更新相关数字。

以下代码不会更新文本字段(当设置为 KeyboardType.Number 时)...

@Composable
fun MyNumberField() {

    var text = remember { mutableStateOf("")}

    val change : (String) -> Unit = { it ->
        value.value = it
    }

    TextField(
        value = text.value,
        modifier = Modifier.fillMaxWidth(),
        keyboardOptions = KeyboardOptions.Default.copy(keyboardType = KeyboardType.Number),
        onValueChange = change
    )

}

以下代码确实会更新文本字段(当设置为 KeyboardType.Text 时)...

@Composable
fun MyNumberField() {

    var text = remember { mutableStateOf("")}

    val change : (String) -> Unit = { it ->
        text.value = it
    }

    TextField(
        value = value.value,
        modifier = Modifier.fillMaxWidth(),
        keyboardOptions = KeyboardOptions.Default.copy(keyboardType = KeyboardType.Text),
        onValueChange = change
    )

}

非常感谢

【问题讨论】:

  • 将用户输入捕获到文本字段中是什么意思?
  • @GabrieleMariotti 当键盘类型设置为KeyboardType.Number时,用户输入数字时,'text'的值不会更新,但是,当键盘类型设置为时,值会更新键盘类型.Text
  • 您使用的是哪个版本的 compose?它应该可以在 beta07 上正常工作
  • @GabrieleMariotti 啊,是的!非常感谢,我还在用 Beta01!
  • 更新到最新版本(beta7)是否解决了您的问题?

标签: android user-input textfield android-jetpack android-jetpack-compose


【解决方案1】:

您应该更新text.value,而不是value.value,您的代码中有错字,请改成这个。

@Composable
fun MyNumberField() {

    var text = remember { mutableStateOf("")}

    val change : (String) -> Unit = { it ->
        value.value = it    // you have this which is not correct and I don't think it even compiled
        text.value = it  // it is supposed to be this 
    }

    TextField(
        value = text.value,
        modifier = Modifier.fillMaxWidth(),
        keyboardOptions = KeyboardOptions.Default.copy(keyboardType = KeyboardType.Number),
        onValueChange = change
    )

}

【讨论】:

    猜你喜欢
    • 2022-11-15
    • 2022-01-07
    • 1970-01-01
    • 2013-12-21
    • 2021-10-01
    • 2023-01-16
    • 2021-05-06
    • 2019-09-02
    • 1970-01-01
    相关资源
    最近更新 更多