There is this widget for the ActionBar which called 'SearchView'. When it's not in use, it looks like this:
And when it's in use, it looks like this:
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" />
Try to call
expandActionView()
on MenuItem, not onActionViewExpanded() on ActionView.It works for me.
If you want to use support library only when necessary, do this
else simply do this
Expand the
SearchView
withand collapse it with
You need to change the value of
android:showAsAction
fromifRoom|collapseActionView
toalways
. TheSearchView
's attributeandroid:iconifiedByDefault
should betrue
, which is the default value, otherwise the user can not collapse theSearchView
after it was expanded programmatically.I know this is late but
Try calling expandActionView() to open it and collapseActionView() to close it. You can call requestFocus() on the actual Action View via getActionView() to give the search view focus :)