为searchView Android应用程序添加提交按钮

为searchView Android应用程序添加提交按钮,android,searchview,submit-button,Android,Searchview,Submit Button,我在Android应用程序中使用searchview,我想添加一个按钮,用户按下该按钮即可开始搜索。根据我在互联网上读到的内容,我可以使用setSubmitButtonEnabled来调用提交按钮,而不是在布局文件中放置按钮。这是我的密码: public void setSubmitButtonEnabled (boolean enabled) { } 我将设置SubmitButtonEnabled放入菜单充气器中,如下所示: @Override public boolean onCreat

我在Android应用程序中使用searchview,我想添加一个按钮,用户按下该按钮即可开始搜索。根据我在互联网上读到的内容,我可以使用setSubmitButtonEnabled来调用提交按钮,而不是在布局文件中放置按钮。这是我的密码:

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);为我工作