当导航到 jetpack compose 中的可组合项时,如何自动将焦点请求到文本字段

Anu*_*nth 15 android android-jetpack-compose android-jetpack-compose-text

我希望当用户导航到可组合项时,通过自动请求焦点放在 jetpack compose 中的文本字段上来弹出键盘。截至目前,这是我尝试过的,但似乎不起作用

val feedbackContent = remember { mutableStateOf(TextFieldValue()) }
val focusRequester = remember { FocusRequester() }

OutlinedTextField(
                modifier = Modifier
                    .clickable {
                        focusRequester.requestFocus()
                    }
                    .fillMaxWidth()
                    .focusRequester(focusRequester)
                    .focusable()
)
Run Code Online (Sandbox Code Playgroud)

Gab*_*tti 15

你可以使用类似的东西:

val focusRequester = remember { FocusRequester() }
val keyboardController = LocalSoftwareKeyboardController.current

OutlinedTextField(
    value = text,
    onValueChange = { text = it},
    modifier = Modifier
        .fillMaxWidth()
        .focusRequester(focusRequester)
        .onFocusChanged {
            if (it.isFocused) {
                keyboardController?.show()
            }
        }
)

LaunchedEffect(Unit) {
    focusRequester.requestFocus()
}
Run Code Online (Sandbox Code Playgroud)

  • @GabrieleMariotti,如果实际上不需要“onDispose{}”,是否有理由使用“DisposableEffect”?在这些情况下,“LaunchedEffect”就足够了吗? (10认同)
  • 嗨@Gabriele,我也尝试了你的另一个答案,但是它们似乎都不起作用。我可以肯定地看到轮廓文本正在获得焦点,但是键盘没有显示,内部也没有光标。还需要做什么才能达到OP的效果吗?非常感谢。 (2认同)