强制操作栏显示搜索视图

22

我可以通过以下操作扩展搜索视图

<item android:id="@+id/menu_search"
          android:title="Search"
          android:showAsAction="never|collapseActionView"
          android:actionViewClass="android.widget.SearchView" />

但我有一个包含3个选项卡的活动,并且我希望SearchView始终处于展开状态。 我该如何做到这一点?

1个回答

62

需要两个步骤。

首先,您必须确保搜索菜单项始终显示为操作,而不会移动到溢出菜单中。为了实现这一点,请将搜索菜单项的 showAsAction 属性设置为 always

<item
    android:id="@+id/menu_search"
    android:title="Search"
    android:showAsAction="always"
    android:actionViewClass="android.widget.SearchView" />

其次,确保默认情况下不会在图标化(即折叠)模式下显示操作视图。要实现这一点,请在搜索视图实例上调用 setIconifiedByDefault(false)

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.my_activity, menu);

    MenuItem searchViewItem = menu.findItem(R.id.menu_search);
    SearchView searchView = (SearchView) searchViewItem.getActionView();
    [...]
    searchView.setIconifiedByDefault(false);

    return true;
}

那应该就可以了。


1
在这一行代码 "searchView.setIconifiedByDefault" 中出现了 NPE。我已经使用了以下代码:SearchView searchView = (SearchView) menu.findItem(R.id.menu_search).getActionView(); searchView.setIconifiedByDefault(false); - Erum
如果您正在使用AppCompat SearchView,请尝试通过MenuItemCompat.getActionView(menu.findItem(R.id.menu_search))获取SearchView。 - Roman_D

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接