当 jetpackCompose 中的活动开始时,键盘需要自动打开并准备好输入

问题描述 投票:0回答:1

在这里,我尝试在 JetpackCompose 中启动活动时自动打开键盘,但我没有找到任何方法来实现此成功并收到以下错误:

随着我研究得更多,我发现我无法在可点击方法之外使用

focusRequester.requestFocus()
,所以在这里我想知道任何其他方法可以实现此成功或无法自动打开输入键盘,需要原因或解决方案。谢谢。

@OptIn(ExperimentalComposeUiApi::class)
@Composable
fun UIEnterName() {
   
    val focusRequester = remember { FocusRequester() }
    val keyboardController = LocalSoftwareKeyboardController.current
    LaunchedEffect(Unit) 
    {
       focusRequester.requestFocus()
       keyboardController?.show()
    }
    
}
android android-jetpack-compose user-input wear-os android-softkeyboard
1个回答
0
投票

您实际上不需要在

keyboardController?.show()
中调用
LaunchedEffect()
,当您请求任何文本字段的焦点时,它会直接显示。查看下面的示例代码:

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

//Need to hide keyboard when we navigate or pop back
DisposableEffect(key1 = Unit, effect = {
    onDispose {
      keyboardController?.hide()
    }
})

LaunchedEffect(key1 = Unit, block = {
    focusRequester.requestFocus()
})

BasicTextField(
    value = title,
    onValueChange = {
        // Your code
    },
    maxLines = 1,
    interactionSource = interactionSource,
    modifier = Modifier
        .focusRequester(focusRequester)
        .padding(top = 40.dp, start = 20.dp, end = 20.dp)
        .fillMaxWidth(),
    textStyle = //textstyle,
    keyboardOptions = KeyboardOptions(
        keyboardType = KeyboardType.Text,
        imeAction = ImeAction.Next
    ),
    cursorBrush = SolidColor(ComposeTheme.colors.primary)
)

此代码将在该屏幕启动时打开键盘,并在我们导航或弹出时隐藏键盘

© www.soinside.com 2019 - 2024. All rights reserved.