How do I open the SearchView programmatically?

Eli Revah picture Eli Revah · Jan 9, 2013 · Viewed 55.1k times · Source

There is this widget for the ActionBar which called 'SearchView'. When it's not in use, it looks like this:

enter image description here

And when it's in use, it looks like this:

enter image description here

I want (programmatically of course) to open the searchview (make it "in use").

I tried several functions such as:

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

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

But none of those worked...

The SearchView in the 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

Matthias Robbers picture Matthias Robbers · Jan 9, 2013

Expand the SearchView with

searchView.setIconified(false);

and collapse it with

searchView.setIconified(true);

You need to change the value of android:showAsAction from ifRoom|collapseActionView to always. The SearchView's attribute android:iconifiedByDefault should be true, which is the default value, otherwise the user can not collapse the SearchView after it was expanded programmatically.