【问题标题】:How to make SearchView on Toolbar always expanded?如何使工具栏上的 SearchView 始终展开?
【发布时间】:2015-11-12 08:46:32
【问题描述】:

我已经将 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);

我的菜单好友:

<?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>

【问题讨论】:

标签: android toolbar searchview actionview


【解决方案1】:

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

【讨论】:

  • 这可行,但我怎样才能禁用我的搜索视图的折叠?
  • 将其折叠为:searchView.setIconified(true);
  • searchview 仍在崩溃。我希望它总是被扩展@dieter_h
  • searchView.setIconified(false);使用这条线总是展开。
【解决方案2】:

你解决了吗? 删除:

searchView.setIconified(false);

只保留这一行:

searchView.setIconifiedByDefault(false);

以及 menu-xml 中的 showAsAction="always"。

这对我有用,搜索视图已展开,不能以任何方式折叠。

【讨论】:

  • 在 searchView 聚焦时按下后退按钮似乎会关闭 searchview。
  • 通过此搜索视图未获得焦点。
【解决方案3】:

以上答案都不适合我。

使用这个

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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-07
    • 1970-01-01
    • 2022-12-05
    相关资源
    最近更新 更多