android - 如何从 Jetpack Compose TextField 关闭虚拟键盘?
问题描述
我正在使用 Jetpack Compose TextField
,我想在用户按下操作按钮(imeActionPerformed
参数)时关闭虚拟键盘。
val text = +state { "" }
TextField(
value = text.value,
keyboardType = KeyboardType.Text,
imeAction = ImeAction.Done,
onImeActionPerformed = {
// TODO Close the virtual keyboard here <<<
}
onValueChange = { s -> text.value = s }
)
解决方案
您可以使用LocalSoftwareKeyboardController
该类来控制当前的软键盘,然后使用hide
方法:
var text by remember { mutableStateOf(TextFieldValue("Text")) }
val keyboardController = LocalSoftwareKeyboardController.current
TextField(
value = text,
onValueChange = {
text = it
},
label = { Text("Label") },
keyboardOptions = KeyboardOptions(imeAction = ImeAction.Done),
keyboardActions = KeyboardActions(
onDone = {keyboardController?.hide()})
)
此解决方案会关闭键盘,而不会将焦点从当前TextField
.
只是为了突出差异:
val focusManager = LocalFocusManager.current
focusManager.clearFocus()
此代码关闭键盘,从TextField移除焦点。
推荐阅读
- python - 打印张量流矩阵 A.eval() 改变矩阵的转置值
- css - Bootstrap 4 - 容器流体不起作用
- c# - 读取列表成员值时动态获取类成员
- php - php curl -X GET 请求正文
- kubernetes - 无法获得作业 rke-network-plugin-deploy-job 的作业完成状态
- php - 如何使用 Guzzle 异步获取执行查询并按正确顺序处理它们?
- typescript - 防止接口具有名称为 X 的属性
- php - 在php laravel中合并多个数组
- javascript - 赛普拉斯 - 使用路由(选项)存根不起作用
- ios - Swift UI: relationship between the sheet and list views