为什么 FocusManager 不能在 AlertDialog 中工作?

yao*_*yao 3 android kotlin android-jetpack-compose

有谁知道如何显示或隐藏里面的键盘AlertDialog

focusManager.clearFocus()里面不起作用AlertDialog

对于textInputService?.hideSoftwareKeyboard()和也是如此softwareKeyboardController?.hide()

例如:

AlertDialog(
    onDismissRequest = {
        openDialog.value = false
    },
    text = {
        TextField(...)
    }
    buttons = {
        Button(
            modifier = Modifier.fillMaxWidth(),
            onClick = { focusManager.clearFocus() }
        ) {
            Text("Update")
        }
    }
)
Run Code Online (Sandbox Code Playgroud)

Phi*_*hov 6

AlertDialog与任何其他 一样,也Dialog有自己的LocalFocusManager以及其他一些局部常量。

您要在 之外捕获它的值AlertDialog,而不是需要在内部捕获它:

buttons = {
    val focusManager = LocalFocusManager.current
    Button(
        modifier = Modifier.fillMaxWidth(),
        onClick = { focusManager.clearFocus() }
    ) {
        Text("Update")
    }
}
Run Code Online (Sandbox Code Playgroud)