【发布时间】:2022-11-10 23:01:24
【问题描述】:
我的观点之一是BasicTextField。我默认显示软键盘,当我开始在键盘上输入字母时,BasicTextField 中没有显示任何内容,因为它没有光标。
为了使我的键盘操作可见,我必须点击 TextField 以使光标可见。现在,当我点击键盘时,我会在BasicTextField 中看到结果。
如何打开带有活动闪烁光标的 BasicTextField?
编辑:proposed solution from here 对我不起作用
val focusRequester = FocusRequester()
val keyboardController = LocalSoftwareKeyboardController.current
//..
.focusRequester(focusRequester)
.onFocusChanged {
if (it.isFocused) {
keyboardController?.show()
}
}
既没有激活光标也没有使键盘出现。在此之上
DisposableEffect(Unit) {
focusRequester.requestFocus()
onDispose { }
}
导致崩溃:
java.lang.IllegalStateException: FocusRequester 未初始化。以下是一些可能的修复:
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)
【问题讨论】:
-
this 会回答你的问题吗?
-
@PhilipDukhov 我改变了 OP
-
你为什么不遵循“可能的修复”?尤其是第一个。
-
@PhilipDukhov 您提供的链接正好有 1 个来自 GabrieleMariotti 的答案,我应用了它。
标签: android-jetpack-compose android-jetpack android-compose-textfield