为searchView Android应用程序添加提交按钮
我在Android应用程序中使用searchview,我想添加一个按钮,用户按下该按钮即可开始搜索。根据我在互联网上读到的内容,我可以使用setSubmitButtonEnabled来调用提交按钮,而不是在布局文件中放置按钮。这是我的密码:为searchView Android应用程序添加提交按钮,android,searchview,submit-button,Android,Searchview,Submit Button,我在Android应用程序中使用searchview,我想添加一个按钮,用户按下该按钮即可开始搜索。根据我在互联网上读到的内容,我可以使用setSubmitButtonEnabled来调用提交按钮,而不是在布局文件中放置按钮。这是我的密码: public void setSubmitButtonEnabled (boolean enabled) { } 我将设置SubmitButtonEnabled放入菜单充气器中,如下所示: @Override public boolean onCreat
public void setSubmitButtonEnabled (boolean enabled) {
}
我将设置SubmitButtonEnabled放入菜单充气器中,如下所示:
@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;
}
显然我做得不对,因为当我启动我的应用程序时,我在屏幕上看不到任何提交按钮。我的代码中缺少了什么或出了什么问题?谢谢。提交按钮仅在
搜索视图有焦点时显示。我的解决方法是使用(ABS
),并编辑源代码,以便即使ActionBar
没有焦点,也可以显示submit按钮。要执行此操作,请执行以下步骤:
1。设置ActionBarSherlock项目
为此,请按照链接下载ABS
,然后在Eclipse(或您喜爱的IDE)中,转到文件->新建->项目…
,然后从现有代码中选择Android
->Android项目。在以下向导中,导航到actionbarsherlock
文件夹的位置,然后单击“确定”创建项目。创建后,您可以将其作为库添加到现有项目中,方法是转到project
->Properties
->Android
,然后在库的底部部分,单击add…
,然后选择actionbarsherlock
。最后,按OK
2。编辑源文件
要解决此问题,您需要编辑文件com.actionbarsherlock.widget.SearchView.java
。打开后,导航到updateSubmitButton(布尔)
方法,并注释掉代码
&& hasFocus()
您的最终方法如下所示:
private void updateSubmitButton(boolean hasText) {
int visibility = GONE;
if (mSubmitButtonEnabled && isSubmitAreaEnabled() //&& hasFocus()
&& (hasText || !mVoiceButtonEnabled)) {
visibility = VISIBLE;
}
mSubmitButton.setVisibility(visibility);
}
现在保存、清理项目并运行—您现在将获得所需的结果
3。记录您的更改(可选)
您可以使用注释记录此更改,例如:
@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) {
...
}
您是否尝试过在“搜索”视图中键入?只有当有文本要搜索时,按钮才会显示。是的,我显示了,但仍然没有任何提交按钮。或者提交按钮应该出现在我的键盘上吗?谢谢你的提问,searchView.setSubmitButtonEnabled(true);为我工作