如何使工具栏上的SearchView始终扩展?

时间:2015-08-19 07:21:08

标签: android toolbar searchview actionview

我已将setIconified()setIconifiedByDefault()定义为false,但默认情况下SearchView菜单项未展开。这是我实现它的方式:

View customTitle = getLayoutInflater().inflate(R.layout.toolbar_custom_title, null);
toolbar.inflateMenu(R.menu.menu_buddies);
toolbar.setNavigationIcon(R.drawable.abc_ic_ab_back_mtrl_am_alpha);
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                finish();
            }
        });

SearchView searchView = (SearchView) toolbar.getMenu().findItem(R.id.menu_search).getActionView();
searchView.setQueryHint("Search Buddies");
searchView.setIconified(false);
searchView.setIconifiedByDefault(false);

我的menu_buddies:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:id="@+id/menu_search"
        xmlns:pawesome="http://schemas.android.com/apk/res-auto"
        android:title="@string/action_search"
        android:icon="@drawable/abc_ic_search_api_mtrl_alpha"
        pawesome:showAsAction="always|collapseActionView"
        pawesome:actionViewClass="android.support.v7.widget.SearchView" />

</menu>

3 个答案:

答案 0 :(得分:3)

您需要将android:showAsAction的值更改为always。 SearchView的属性android:iconifiedByDefault shouldtrue

答案 1 :(得分:2)

你解决了这个问题吗? 删除:

searchView.setIconified(false);

并且只保留这一行:

searchView.setIconifiedByDefault(false);

以及showAsAction =&#34;总是&#34;在menu-xml中。

这适用于我,搜索视图已展开,无论如何都无法折叠。

答案 2 :(得分:2)

上述答案都不适合我。

使用此

SearchManager searchManager = (SearchManager) mActivity.getSystemService(Context.SEARCH_SERVICE);
                SearchView searchView = new SearchView(mActivity.actionBar.getThemedContext());
                searchView.setSearchableInfo(searchManager.getSearchableInfo(mActivity.getComponentName()));
                searchView.setIconifiedByDefault(false);
                searchView.setQueryHint("search");
                menu.findItem(R.id.action_search).setActionView(searchView);