Ral*_*kum 5 android-jetpack android-jetpack-compose android-compose-textfield
我有BasicTextField一个我的看法。我默认显示软键盘,当我开始在键盘上输入字母时, 中不会显示任何内容BasicTextField,因为它没有光标。
为了使键盘操作可见,我必须点击文本字段以使光标可见。现在,当我点击键盘时,我会在BasicTextField.
如何打开其中有活动闪烁光标的 BasicTextField?
编辑:这里提出的解决方案对我不起作用
val focusRequester = FocusRequester()
val keyboardController = LocalSoftwareKeyboardController.current
//..
.focusRequester(focusRequester)
.onFocusChanged {
if (it.isFocused) {
keyboardController?.show()
}
}
Run Code Online (Sandbox Code Playgroud)
既没有激活光标也没有显示键盘。在此之上
DisposableEffect(Unit) {
focusRequester.requestFocus()
onDispose { }
}
Run Code Online (Sandbox Code Playgroud)
导致崩溃:
java.lang.IllegalStateException:FocusRequester 未初始化。以下是一些可能的修复方法:
Run Code Online (Sandbox Code Playgroud)1. Remember the FocusRequester: val focusRequester = remember { FocusRequester() } 2. Did you forget to add a Modifier.focusRequester() ? 3. Are you attempting to request focus during composition? Focus requests should be made in response to some event. Eg Modifier.clickable { focusRequester.requestFocus() } at androidx.compose.ui.focus.FocusRequester.requestFocus(FocusRequester.kt:54)
我让它工作了:
val focusRequester = FocusRequester()
//..
.focusRequester(focusRequester)
Run Code Online (Sandbox Code Playgroud)
而不是
DisposableEffect(Unit) {
focusRequester.requestFocus()
onDispose { }
}
Run Code Online (Sandbox Code Playgroud)
我用了
LaunchedEffect(Unit) {
focusRequester.requestFocus()
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1489 次 |
| 最近记录: |