Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I close a SearchView programmatically?

I currently have a SearchView in the action bar of my app. When I click the search icon, the SearchView expands and the keyboard pops up as expected. Clicking the "X" in the SearchView box closes the SearchView as expected. However, when the SearchView is activated and I press the "back" button, my app is exited. This is the correct behavior, but what I am trying to do now is to capture back button press and just have it close the SearchView (not my app) when the SearchView is visible. Is there a way to invoke the SearchView OnCloseListener() programmatically on a back button press? For example, something like this:

// On a back button press, if we are currently searching, // close the SearchView. Otherwise, invoke normal back button // behavior. public boolean onKeyDown(int keyCode, KeyEvent event) {    if (keyCode == KeyEvent.KEYCODE_BACK) {         if (isSearchViewVisible) {             SearchView searchView = (SearchView) menu.findItem(R.id.searchBox)                .getActionView();              // This method does not exist             searchView.invokeClose();             return true;         }     }     return super.onKeyDown(keyCode, event); } 
like image 297
Tim Avatar asked Jul 06 '13 19:07

Tim


People also ask

How to close searchView programmatically in android?

or use: myToolBar. collapseActionView(); This will make the searchView to collapse before you press the back then the back action will be called.

What is collapse action view?

The collapseActionView flag indicates how to display the widget when the user is not interacting with it: If the widget is on the app bar, the app should display the widget as an icon. If the widget is in the overflow menu, the app should display the widget as a menu item.


1 Answers

Based on @MarcinOrlowski answer, also you can use:

@Override public void onBackPressed() {     if (!searchView.isIconified()) {         searchView.setIconified(true);     } else {         super.onBackPressed();     } } 
like image 87
Mohsen Afshin Avatar answered Sep 22 '22 15:09

Mohsen Afshin