Intereting Posts
Android: onScrollStateChanged SCROLL_STATE_IDLE иногда не срабатывает Android BigInteger ArithmeticException Кинжал 2: предоставить один и тот же экземпляр между несколькими компонентами с одинаковой областью действия на разных библиотечных модулях Android – SQLite ContentResolver вставка / удаление / обновление в потоке пользовательского интерфейса? Drag & Drop Espresso Как получить динамически сгенерированное имя изображения в android Создайте андроид apk, используя сценарий оболочки из php? Does PhoneGap / Apache Cordova предлагает API для зашифрованной базы данных SQLite ListView addHeaderView заставляет позицию увеличиваться на единицу? Proguard с параметрической коллекцией orrmlite Android check null или пустая строка в Android Какова цель карты проекции Android в контент-провайдере? Цвет заливки на круг не всегда отображается на Картах Google v2 Получить JSONArray без имени массива? Андроид createTempFile запрещает отклонять разрешения?

Сбросить панель действий после использования SearchView

Я использую виджет SearchView чтобы включить поиск в моем приложении. После первоначального нажатия на значок SearchView виджет SearchView расширяется в поле поиска, а рядом с значком приложения отображается стрелка «назад». Если щелкнуть значок приложения, панель действий вернется в исходное состояние (нет «назад»), а SearchView вернется к значку.

Теперь проблема: после того, как поиск выполнен, панель действий не изменяется, единственный способ вернуться – щелкнуть значок приложения или «назад» стрелки телефона. Не хорошо, так как я хочу, чтобы панель действий переходила в исходное состояние, когда поиск выполнен. Я попробовал SearchView.setIconofied(true) но есть две проблемы:

  1. Значок поиска появляется в том же месте, что и поле редактирования (первоначально оно находится справа).
  2. На панели действий по-прежнему отображается стрелка «назад».

Я думаю, что проблема, с которой я столкнулась, является результатом отклонения от обычной схемы навигации. В моем случае все происходит внутри одного и того же действия (результаты поиска отображаются в том же самом действии, что и на панели действий), поэтому, например, выполнение Activity.finish() просто делает выход приложения.

Как вызвать «вернуться на один шаг» панели действий? Или имитировать щелчок на значке приложения?

Solutions Collecting From Web of "Сбросить панель действий после использования SearchView"

Похоже, вы настроили это как сворачиваемое действие на MenuItem. Вы можете вызвать collapseActionView () в этом экземпляре MenuItem, чтобы отправить его обратно в закрытое состояние.

Метод collapseActionView () работает только с уровня API 14. Если вы хотите поддерживать более ранние версии Android, вам следует использовать библиотеку MenuItemCompat .

Вот мое решение, чтобы свернуть поиск и сбросить панель действий …

 private MenuItem searchMenuItem; @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main_menu, menu); SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE); searchMenuItem = menu.findItem(R.id.action_search); final SearchView searchView = (SearchView) MenuItemCompat.getActionView(searchMenuItem); searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName())); searchView.setIconifiedByDefault(false); customizeSearchView(searchView); return super.onCreateOptionsMenu(menu); } @Override protected void onNewIntent(Intent intent) { setIntent(intent); if (searchMenuItem != null) { if (MenuItemCompat.expandActionView(searchMenuItem)) { MenuItemCompat.collapseActionView(searchMenuItem); } else if (MenuItemCompat.collapseActionView(searchMenuItem)) { MenuItemCompat.expandActionView(searchMenuItem); } } handleIntent(intent); }