Wear OS:点击Chip组件如何直接唤起键盘输入?
如何通过Chip点击直接唤起键盘,跳过RemoteInput的输入类型选择菜单?
问题描述
我有一个Chip组件,希望通过它的onClick事件唤起键盘。目前使用RemoteInput API实现,代码如下:
val intent: Intent = RemoteInputIntentHelper.createActionRemoteInputIntent() val remoteInputs: List<RemoteInput> = listOf( RemoteInput .Builder(inputTextKey) .setLabel("Note") .wearableExtender { setEmojisAllowed(false) setInputActionType(EditorInfo.IME_ACTION_DONE) } .build() ) RemoteInputIntentHelper.putRemoteInputsExtra(intent, remoteInputs)
搭配Chip组件使用:
Chip( onClick = { launcher.launch(intent) }, ...)
该实现可以正常运行,但会先弹出一个选择输入类型的菜单(语音输入或键盘输入)。我查阅了RemoteInput的大部分文档,尝试修改API暴露的setter字段,但除了setEmojisAllowed外,其余字段似乎都不影响输入类型。请问是否有办法直接唤起键盘输入,跳过这个中间菜单?
解决方案
要跳过输入类型选择菜单直接唤起键盘,只需在wearableExtender中添加setVoiceAllowed(false),禁用语音输入选项即可。修改后的代码如下:
val intent: Intent = RemoteInputIntentHelper.createActionRemoteInputIntent() val remoteInputs: List<RemoteInput> = listOf( RemoteInput .Builder(inputTextKey) .setLabel("Note") .wearableExtender { setEmojisAllowed(false) setInputActionType(EditorInfo.IME_ACTION_DONE) setVoiceAllowed(false) // 禁用语音输入选项 } .build() ) RemoteInputIntentHelper.putRemoteInputsExtra(intent, remoteInputs)
原理说明
默认情况下,Wear OS的RemoteInput会同时提供语音和键盘两种输入方式,因此会弹出选择菜单供用户选择。通过setVoiceAllowed(false)禁用语音输入后,系统只剩键盘输入这一种可选方式,就会直接打开键盘输入界面,跳过中间的选择步骤。
内容的提问来源于stack exchange,提问作者JoZ
相关产品推荐
相关产品推荐

