在文本字段撰写中关闭键盘后,软键盘无法第二次打开

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

我是 Compose 新手。当我尝试实现接受用户输入的 UI 时,在撰写文本字段时遇到问题。一旦单击文本字段,软键盘就会立即打开并能够输入文本。之后,我关闭软键盘并再次单击“文本字段”,但键盘未打开。甚至我也尝试过 Playstore 上提供的一些应用程序。但它在基于 XML 视图的应用程序上运行良好。

每当单击撰写中的文本字段时,软键盘都会打开。

android-jetpack-compose textfield android-softkeyboard
1个回答
0
投票

您观察到的行为背后的原因如下:

  • 最初,TextField 没有焦点,
  • 如果您单击文本字段,它将获得焦点。您将看到光标闪烁。当 TextField 获得焦点时,键盘将打开。
  • 但是,关闭键盘后,文本字段仍保持焦点状态,如仍然存在的光标所示。
  • 当您再次单击文本字段时,键盘将不会打开,因为文本字段已经获得焦点。

要解决这个问题,您可以使用

FocusRequester
。按如下方式更改您的代码:

@Composable
fun MyScreen() {

    val focusRequester = remember { FocusRequester() }
    var inputText by remember { mutableStateOf(TextFieldValue("")) }

    TextField(
        modifier = Modifier
            .fillMaxWidth()
            .focusRequester(focusRequester),  // this newly requests focus at each click
        value = inputText,
        onValueChange = { newText ->
            inputText = newText
        }
    )
)

如果此答案对您有帮助,您可以通过单击此答案左侧的绿色复选标记来接受。

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