Reputation: 817
I have used Sherlock search view widget in action bar for search menu. The code snippet for initializing the search view
MenuItem item = menu.findItem(R.id.menu_search);
item.expandActionView();
mSearchView = (SearchView) item.getActionView();
mSearchView.setIconifiedByDefault(false);
mSearchView.setQuery(query, false);
mSearchView.clearFocus();
The above code shows expanded search view with default search query. The problem is when I press back button the search view again collapses before returning to previous activity in android. I don't want the search view to collapse on back key press. How to prevent search view from collapsing on back key press?
Upvotes: 11
Views: 4193
Reputation: 2789
SearchView.setIconifiedByDefault(false)
should be enough if you have set the attribute android:showAsAction="always"
in your menu xml.
The following snippet works for me:
default_options.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android"
<item android:id="@+id/action_search"
android:title="@string/search"
android:icon="@drawable/topbar_busqueda"
androidshowAsAction="always"
android:actionViewClass="android.support.v7.widget.SearchView" />
</menu>
Activity
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.default_options menu);
MenuItem menuItem = menu.findItem(R.id.action_search);
SearchView searchView = (SearchView) menuItem.getActionView();
prepareSearchViewAdapter(searchView, menuItem);
super.onCreateOptionsMenu(menu, inflater);
}
private void prepareSearchViewAdapter(final SearchView searchView, MenuItem menuItem) {
searchView.setIconifiedByDefault(false);
}
Upvotes: 3
Reputation: 225
Add a boolean value when search view is open like this
private Boolean isSearchPageIsOpen = true;
Then add the even to handle back button press
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
switch (keyCode) {
case KeyEvent.KEYCODE_BACK:
if(isSearchPageIsOpen ){
do something here
}
return false;
Upvotes: 0