Android Compose: 有没有办法在键盘上点击“完成”键时关闭对话框?

3

我是Android Compose的新手。是否有任何方法可以使用ImeAction在点击键盘上的完成键时关闭对话框?

目前以下代码可以在点击完成后清除焦点以及如何关闭对话框:

    TextField(
        value = text,
        onValueChange = {
            text = it
        },
        singleLine = true,
        keyboardOptions = KeyboardOptions(imeAction = ImeAction.Done),
        keyboardActions = KeyboardActions(
            onDone = { focusRequester.requestFocus() }
        ),
        modifier = Modifier.onKeyEvent {
            if (it.nativeKeyEvent.keyCode == KeyEvent.KEYCODE_ENTER){
                focusRequester.requestFocus()
                true
            }
            false
        }
    )

关闭警告对话框吗?如果不行,请附上屏幕截图以获得更清晰的说明。 - Himanshu Bansal
什么样的对话框? - z.g.y
有一个自定义密码对话框,我需要在 onDone 点击时关闭它,而这个 onDone 是 ImeAction。 - kgsharathkumar
那么你很可能是用 MutableState<Boolean> 来管理对话框的状态。在这种情况下,只需将其设置为 false,或者在 onDone 方法中调用你隐藏对话框的方法。请参考下面的答案。 - Himanshu Bansal
检查Thracian的答案。 - z.g.y
1个回答

5
在onDone方法内部,将用于显示对话框的标志设置为false。
var showDialog by remember {mutableStateOf(false)}

 onDone = { 
    focusRequester.requestFocus()
    showDialog = false
 }

if(showDialog) {
   AlerDialog(...)
}

你可以查看下面的链接以显示对话框: 在 Jetpack Compose 中显示自定义警告对话框

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接