Wear OS自定义Android键盘:内置按钮隐藏及文本提交问题
Wear OS Compose自定义键盘:隐藏键盘与文本提交方案
一、正确隐藏键盘的实现
你之前的代码核心问题是手动实例化IMEService——自己创建的IMEService对象并不是当前系统正在运行的IME服务实例,调用它的方法完全无效。Wear OS + Compose环境下,直接用官方提供的API就能搞定:
在自定义键盘的Compose组件中,通过LocalSoftwareKeyboardController直接调用hide()方法即可:
// 在你的键盘按钮点击事件中 val keyboardController = LocalSoftwareKeyboardController.current keyboardController?.hide()
这个API是Compose专为软键盘控制设计的,无需绕弯操作输入连接或IME服务实例,适配Wear OS全屏键盘场景的效果直接可靠。
二、向文本框提交文本的正确方式
提交文本需要借助InputConnection完成键盘与输入框的文本交互。在Compose的IME布局中,通过LocalInputConnection.current获取当前有效的输入连接,再调用commitText方法提交内容:
val inputConnection = LocalInputConnection.current val keyboardController = LocalSoftwareKeyboardController.current // 提交文本的点击事件处理 fun submitText(input: String) { // 将文本插入光标位置,第二个参数1表示光标停在文本末尾 inputConnection?.commitText(input, 1) // 提交后隐藏键盘(可选操作) keyboardController?.hide() }
如果需要触发输入框的"完成"动作(比如触发文本框的onDone回调),可以在提交文本后调用:
inputConnection?.performEditorAction(EditorInfo.IME_ACTION_DONE)
注意前提是目标输入框的imeOptions已设置为IME_ACTION_DONE。
内容的提问来源于stack exchange,提问作者Angel
相关产品推荐
相关产品推荐

