我正在使用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 }
)
7条答案
按热度按时间vkc1a9a21#
按一下按钮时隐藏键盘
要添加Gabriele Mariotti's solution,如果你想有条件地隐藏键盘,比如说在一个按钮点击后,使用这个:
例如,点按“添加”按钮后隐藏键盘:
nlejzf6q2#
我找到了解决方案here:)
我只需要从我的组件中调用上面的函数:
ffx8fchx3#
我在CoreTextField中找到了关闭他的方法,使用TextInputService来控制开关
p8ekf7hl4#
实现“androidx.compose.material3:材料3:1.0.0-alpha 02”
具有“输入时隐藏键盘”操作的文本字段
ubof19bj5#
您可以使用
LocalSoftwareKeyboardController
类别来控制目前的软件键盘,然后使用**hide
**方法:此解决方案会关闭键盘**,而不会**从当前
TextField
中移除焦点。为了突出两者的区别:
此代码关闭键盘,并从TextField中删除焦点。
4nkexdtk6#
从compose
1.0.0-alpha12
开始(在compose1.3.1
中仍然有效),不赞成使用onImeActionPerformed
,建议使用keyboardActions
与keyboardOptions
的组合:focusManager.clearFocus()
将负责关闭软键盘。pinkon5k7#
在
1.0.0
中,您可以使用SoftwareKeyboardController
或FocusManager
来执行此操作。这个答案集中在他们的差异上。
设置:
软件键盘控制器:
基于
@Gabriele Mariottis
的答案。这只会关闭键盘,但 * 不会 * 从任何聚焦的TextField清除焦点(注意光标和粗下划线)。
焦点管理器:
基于
@azizbekians
的答案。这将关闭键盘并从TextField中清除焦点。