如何编程方式打开搜索查看?(How do I open the SearchView program

2019-07-18 01:07发布

有了这个小工具的这叫做动作条“搜索查看”。 当它不使用时,它看起来像这样:

而当它在使用时,它看起来是这样的:

我想(编程的过程中)打开搜索查看(使“使用中”的话)。

我试了好几种功能,如:

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" />

Answer 1:

展开SearchView

searchView.setIconified(false);

与它崩溃

searchView.setIconified(true);

您需要更改的值android:showAsActionifRoom|collapseActionViewalways 。 该SearchView的属性android:iconifiedByDefault应该是true ,这是默认值,否则用户无法折叠SearchView它编程扩大后。



Answer 2:

尝试调用expandActionView()的菜单项,不onActionViewExpanded()上的ActionView。

这个对我有用。

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


Answer 3:

如果你希望只在必要时使用支持库,做到这一点

    MenuItem searchMenuItem = menu.findItem(R.id.action_search);
    if (Utils.hasIceCreamSandwich())
        searchMenuItem.expandActionView();
    else MenuItemCompat.expandActionView(searchMenuItem);

否则只是做到这一点

    MenuItem searchMenuItem = menu.findItem(R.id.action_search);
    MenuItemCompat.expandActionView(searchMenuItem);


Answer 4:

我知道这是迟,但

尝试调用expandActionView()打开它,并collapseActionView()来关闭它。 。你可以通过getActionView()的实际动作视图调用requestFocus()方法来给搜索视图焦点:)



文章来源: How do I open the SearchView programmatically?