如何以编程方式打开 SearchView?

2022-08-31 09:29:52

ActionBar有这个小部件,称为“SearchView”。当它不使用时,它看起来像这样:

enter image description here

当它被使用时,它看起来像这样:

enter image description here

我希望(当然是以编程方式)打开搜索视图(使其“正在使用中”)。

我尝试了几个功能,例如:

SearchView searchView = (SearchView) menu.findItem(R.id.menu_search).getActionView();
    searchView.setOnQueryTextListener(this);

    searchView.performClick();
    searchView.requestFocus();

但这些都没有奏效...

XML 中的搜索视图:

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

答案 1

展开SearchView

searchView.setIconified(false);

并折叠它

searchView.setIconified(true);

您需要将 的值从 更改为 。的属性应为 ,这是默认值,否则用户在以编程方式展开后无法折叠。android:showAsActionifRoom|collapseActionViewalwaysSearchViewandroid:iconifiedByDefaulttrueSearchView


答案 2

尝试调用 MenuItem,而不是 ActionView 上的 onActionViewExpanded()。expandActionView()

它对我有用。

MenuItem searchMenuItem = menu.findItem(R.id.menu_search);
searchView = (SearchView) searchMenuItem.getActionView();
searchMenuItem.expandActionView();

推荐