我正在为我的应用程序的搜索界面添加语音搜索功能。目前,它看起来像这样:
为了添加语音搜索,我在我的可搜索配置中添加了一个voiceSearchMode
,它在SearchView中添加了一个按钮来触发语音对话框。界面现在看起来像这样:
但是,您可以在键盘的,
键上看到,麦克风按钮现已禁用。我找不到任何关于如何再打开它的文档,唯一相关的问题解释了如何明确禁用它。
是否可以在SearchView
中同时拥有系统的语音搜索对话框和键盘的语音输入?
我知道这是一个老问题,但无法通过谷歌找到答案,所以我想添加我在这里找到的内容。看了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"