SearchView可以同时具有语音搜索按钮和键盘语音输入吗?

问题描述 投票:10回答:1

我正在为我的应用程序的搜索界面添加语音搜索功能。目前,它看起来像这样:

initial search interface

为了添加语音搜索,我在我的可搜索配置中添加了一个voiceSearchMode,它在SearchView中添加了一个按钮来触发语音对话框。界面现在看起来像这样:

enter image description here

但是,您可以在键盘的,键上看到,麦克风按钮现已禁用。我找不到任何关于如何再打开它的文档,唯一相关的问题解释了如何明确禁用它。

是否可以在SearchView中同时拥有系统的语音搜索对话框和键盘的语音输入?

android android-softkeyboard searchview voice
1个回答
1
投票

我知道这是一个老问题,但无法通过谷歌找到答案,所以我想添加我在这里找到的内容。看了SearchView的源代码后,我在setSearchableInfo中找到了以下内容:

if (mVoiceButtonEnabled) {  
  // Disable the microphone on the keyboard, as a mic is displayed near the text box  
  // TODO: use imeOptions to disable voice input when the new API will be available  
  mSearchSrcTextView.setPrivateImeOptions(IME_OPTION_NO_MICROPHONE);  
}  

然后我做的是创建一个扩展SearchView的类,重写setSearchableInfo方法,并在调用super.setSearchableInfo之后添加以下内容:

SearchAutoComplete mSearchSrcTextView = findViewById(android.support.v7.appcompat.R.id.search_src_text);  
mSearchSrcTextView.setPrivateImeOptions("");  

现在我在键盘和SearchView中有一个麦克风。

编辑:如果您在菜单中使用它,请不要忘记引用您的课程。

app:actionViewClass="your.searchview.class"
© www.soinside.com 2019 - 2024. All rights reserved.