如何解决关闭复选框 onCheckedChange Jetpack Compose 上的键盘
我正在使用 Jetpack compose,每当我选中该框时,我都试图关闭键盘(TextField 在获得焦点时创建的键盘)。
我有类似的东西:
val focusManager = LocalFocusManager.current
CheckBox(
checked = isChecked,onCheckedChange = { isChecked ->
focusManager.clearFocus()
})
但是,我发现当我放置断点时,每当我选中/取消选中该框时,focusManager.clearFocus() 都不会一直被调用。
是否有一种简单的方法可以在选中复选框时关闭键盘?为什么没有一直调用 onCheckedChange?
解决方法
我认为您不匹配 isChecked
变量。这就是不触发 onCheckedChange
的原因。检查下面的可组合函数。
我添加了一个 TextField。如果单击它,它将获得焦点并打开键盘。在复选框中,我给出的逻辑是,如果选中该复选框,则如果它已经打开,它将关闭键盘。
@Composable
fun checkCheckbox() {
val textFieldValue = remember { mutableStateOf("") }
val isChecked = remember { mutableStateOf(false) }
OutlinedTextField(
modifier = Modifier
.fillMaxWidth(),value = textFieldValue.value,onValueChange = { textFieldValue.value = it },label = { Text("Label") }
)
val focusManager = LocalFocusManager.current
Checkbox(
checked = isChecked.value,onCheckedChange = { checked ->
Log.e("Check::",checked.toString())
isChecked.value = checked
if (checked) {
Log.e("Focus::","Clear")
focusManager.clearFocus()
}
})
}
,
onCheckedChange
是单击复选框时调用的回调。
如果您想在不清除焦点的情况下关闭键盘,您可以使用 keyboardController?.hide()
:
var isChecked by remember { mutableStateOf(false) }
val keyboardController = LocalSoftwareKeyboardController.current
Checkbox(
checked = isChecked,onCheckedChange = {
isChecked = it
keyboardController?.hide()
//If you want to close the keyboard only if the checkbox is checked
//if (it) {
// keyboardController?.hide()
//}
})
如果您想关闭键盘并清除焦点,请使用:
Checkbox(
checked = isChecked,onCheckedChange = {
isChecked = it
focusManager.clearFocus()
})
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。