【发布时间】:2022-01-20 20:55:55
【问题描述】:
在 Jetpack Compose 中探索 TextField 时,我遇到了一个案例,我必须修改在字段中键入的输入。 例如输入3个字符后加逗号。
这就是我的做法。
@Composable
fun TFDemo() {
var fieldValue by remember { mutableStateOf(TextFieldValue("")) }
TextField(
value = fieldValue,
onValueChange = {
val newMessage = it.text.let { text -> if (text.length == 3) "$text," else text }
fieldValue = it.copy(newMessage, selection = TextRange(newMessage.length))
},
keyboardOptions = KeyboardOptions(autoCorrect = false),
)
}
但是在运行之后,我意识到添加逗号后,键盘视图从数字/符号变回了字母,这不应该是这种情况。 为了清楚起见,请参阅下面的视频输出
正如您在下面的视频中看到的,当我输入“111”时,附加了逗号,突然键盘的数字视图再次变为字母。
这里我修改了TextFieldValue 的selection,这样无论何时添加逗号,光标始终位于消息的末尾。
【问题讨论】:
-
看起来像一个错误,我建议你report它来撰写问题跟踪器。作为 tmp 解决方案,现在考虑使用
visualTransformation。
标签: android android-layout user-interface textfield android-jetpack-compose