Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Expand and give focus to SearchView automatically

I'm developing an application where the user presses the "Search" icon in the ActionBar and a SearchView is made visible at the top of the screen.

My problem is that the SearchView is not in focus nor expanded so the user has to press the search button on the Searchview to make it expand and bring out the keyboard.

How should this be solved?

like image 762
SweSnow Avatar asked Jul 29 '12 14:07

SweSnow


People also ask

How to set focus on SearchView android?

To make the SearchView expanded by default, call setIconifiedByDefault(false) on it when you initialise it (e.g. in onCreateOptionsMenu(..) or onPrepareOptionsMenu(..) ). I've found in most cases this will give it focus automatically, but if not simply call requestFocus() on it too.

What is iconifiedByDefault in Android?

android:iconifiedByDefault. The default state of the SearchView. android:imeOptions. The IME options to set on the query text field.


2 Answers

You can also call to expandActionView() method in order to force it:

@Override public boolean onCreateOptionsMenu( Menu menu ) {     super.onCreateOptionsMenu( menu );      MenuItem searchMenuItem = menu.findItem( R.id.mi_search ); // get my MenuItem with placeholder submenu     searchMenuItem.expandActionView(); // Expand the search menu item in order to show by default the query      return true; } 

Search item in the Action Bar layout:

<item         android:id="@+id/mi_search"         android:icon="@drawable/abs__ic_search_api_holo_light"         android:title="@string/search"         android:showAsAction="ifRoom|collapseActionView"         android:actionViewClass="com.actionbarsherlock.widget.SearchView"         /> 
like image 153
JavierCane Avatar answered Oct 05 '22 21:10

JavierCane


To make the SearchView expanded by default, call setIconifiedByDefault(false) on it when you initialise it (e.g. in onCreateOptionsMenu(..) or onPrepareOptionsMenu(..)). I've found in most cases this will give it focus automatically, but if not simply call requestFocus() on it too.

like image 25
Alex Curran Avatar answered Oct 05 '22 22:10

Alex Curran