在探索TextFieldJetpack Compose 时,我遇到了一种情况,我必须修改在字段中键入的输入。例如,输入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),
)
}
Run Code Online (Sandbox Code Playgroud)
但运行后,我意识到添加逗号后,键盘视图从数字/符号变回字母,但事实不应该如此。为清楚起见,请参阅下面的视频输出
正如您在下面的视频中看到的,当我输入“111”时,附加了逗号,突然键盘的数字视图再次变为字母。
这里我修改了selectionof ,TextFieldValue以便每当附加逗号时光标始终位于消息的末尾。
user-interface android textfield android-layout android-jetpack-compose