我在我的Android应用中使用searchview,我想添加一个用户按下以开始搜索的按钮。基于我在Internet上阅读的内容,我可以使用setSubmitButtonEnabled来调用提交按钮,而不是在布局文件中放置按钮。这是我的代码:
public void setSubmitButtonEnabled (boolean enabled) {
}
我将setSubmitButtonEnabled放在菜单inflater中,如下所示:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.mylist, menu);
SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
SearchView searchView = (SearchView) menu.findItem(R.id.action_search).getActionView();
searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
searchView.setIconifiedByDefault(false);
setSubmitButtonEnabled(true);
return true;
}
显然我做得不对,因为当我启动我的应用程序时,我在屏幕上看不到任何提交按钮。我的代码中缺少什么或出了什么问题?谢谢。
答案 0 :(得分:0)
只有在SearchView
有焦点时才会显示提交按钮。我的解决方法是使用ActionBarSherlock(ABS
),并编辑源代码,以便即使ActionBar
没有焦点也可以显示提交按钮。为此,请按照下列步骤操作:
<强> 1。设置ActionBarSherlock项目
要执行此操作,请按照链接下载ABS
,然后在 Eclipse (或您喜欢的IDE)中,转到File
- &gt; New
- &gt; Project...
,然后选择Android
- &gt; Android Project from Existing Code
。在以下向导中,导航到actionbarsherlock
文件夹的位置,然后单击“确定”以创建项目。创建后,您可以将其作为库添加到现有项目中,方法是转到Project
- &gt; Properties
- &gt; Android
,然后转到底部库< / em>部分,点击Add...
,然后选择actionbarsherlock
。最后,按OK。
<强> 2。编辑来源
要解决此问题,您需要编辑文件com.actionbarsherlock.widget.SearchView.java
。打开后,导航到updateSubmitButton(boolean)
方法,并注释掉代码
&& hasFocus()
您的最终方法将如下所示:
private void updateSubmitButton(boolean hasText) {
int visibility = GONE;
if (mSubmitButtonEnabled && isSubmitAreaEnabled() //&& hasFocus()
&& (hasText || !mVoiceButtonEnabled)) {
visibility = VISIBLE;
}
mSubmitButton.setVisibility(visibility);
}
现在保存,清理项目并运行 - 现在您将获得所需的结果。
第3。记录您的更改(可选)
您可以使用Modified注释记录此更改,例如:
@Modified(author="Phil Brown", summary="Commented out '&& hasFocus()' in order to allow the submit button to be shown without focus to the view.")
private void updateSubmitButton(boolean hasText) {
...
}