当我输入或 Tab 键时,仍然使用 jetpack compose 在密码输入字段中输入值。
下面是我的代码片段:
val (focusRequester) = FocusRequester.createRefs()
TextField(
value = text,
onValueChange = {
text = it
},
singleLine = true,
keyboardOptions = KeyboardOptions(imeAction = ImeAction.Done),
keyboardActions = KeyboardActions(
onDone = { focusRequester.requestFocus() }
),
modifier = Modifier.onKeyEvent {
if (it.nativeKeyEvent.keyCode == KeyEvent.KEYCODE_ENTER){
focusRequester.requestFocus()
true
}
false
}
)
Tab key
and enter key
通过 Vysor 从笔记本电脑键盘输入,而不是从 Android 键盘输入。
任何建议都欢迎在这里提出。谢谢!
更新1:
有什么方法可以让我们像标准一样处理所有功能键,而无需使用下面的代码。
modifier = Modifier.onKeyEvent {
if (it.nativeKeyEvent.keyCode == KeyEvent.KEYCODE_ENTER || it.nativeKeyEvent.keyCode == KeyEvent.KEYCODE_TAB) {
focusManager.moveFocus(FocusDirection.Next)
}
false
}
您可以使用正则表达式,例如:
val pattern = remember { Regex("^[^\\t\\n]*\$") }
val focusManager = LocalFocusManager.current
TextField(
value = text,
onValueChange = {
if (it.isEmpty() || it.matches(pattern)) {
text = it
}
},
singleLine = true,
maxLines= 1,
keyboardOptions = KeyboardOptions(imeAction = ImeAction.Done),
keyboardActions = KeyboardActions(
onDone = { focusManager.moveFocus(FocusDirection.Next) }
),
modifier = Modifier.onKeyEvent {
if (it.nativeKeyEvent.keyCode == KeyEvent.KEYCODE_ENTER || it.nativeKeyEvent.keyCode == KeyEvent.KEYCODE_TAB) {
focusManager.moveFocus(FocusDirection.Next)
}
false
}
)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)