Ответ 1
Итак, глядя на заголовок вашего вопроса, вы не знаете, как определить, когда закрывается SearchView
и, следовательно, вы не можете восстановить свои представления в "нормальном" состоянии, когда SearchView
больше не открывается.
Устаревшее решение с Android 4.0 +
(простое) решение состоит в том, чтобы добавить: SearchView.OnCloseListener
к вашему SearchView
, например:
SearchView.setOnCloseListener(new SearchView.OnCloseListener() {
@Override
public boolean onClose() {
// This is where you can be notified when the `SearchView` is closed
// and change your views you see fit.
}
});
ИЗМЕНИТЬ
Обновленное решение, которое работает в Android 4.0 +
По-видимому, OnCloseListener
неисправен и не работает на более поздних версиях Android (4.0+). См.: https://code.google.com/p/android/issues/detail?id=25758
Решением этого является использование версии библиотеки поддержки SearchView
:
Мой onCreateOptionsMenu
выглядит следующим образом:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu, menu);
MenuItem searchMenuItem = menu.findItem(R.id.searchView);
SearchView searchView = (SearchView) searchMenuItem.getActionView();
MenuItemCompat.setOnActionExpandListener(searchMenuItem, new MenuItemCompat.OnActionExpandListener() {
@Override
public boolean onMenuItemActionExpand(MenuItem item) {
Toast.makeText(ScrollingActivity.this, "onMenuItemActionExpand called", Toast.LENGTH_SHORT).show();
return true;
}
@Override
public boolean onMenuItemActionCollapse(MenuItem item) {
Toast.makeText(ScrollingActivity.this, "onMenutItemActionCollapse called", Toast.LENGTH_SHORT).show();
return true;
}
});
}
Что касается того, почему Google даже не потрудился написать комментарий в документации, я не знаю, но это печально.
EDIT2
Просто добавив ссылку, которую @MateiRadu добавил в комментарии:
как обращаться с кнопкой возврата в Search View в андроиде
Это также показывает, как использовать OnActionExpandListener
вместо OnCloseListener
.
Надеюсь, что это поможет.