Intereting Posts
Android, быстрый вопрос о лучших практиках Как обрабатывать ошибки в пользовательском AsyncTaskLoader? Анализ производительности приложения для Android с помощью Android Development Studio Тесты для Android: стабилизация с помощью Mockito SQlite – Android – синтаксис внешнего ключа RecyclerView.Adapter.notifyItemChanged () никогда не передает полезную нагрузку onBindViewHolder () Проведите пальцем по видам деятельности в андроиде Экран загрузки приложений Android Не удалось отправить данные JSON с Android на сервер ROR Android Studio – 4K монитор масштабирования UI OnOrientationChanged () вызывается, когда OrientationEventListener отключен Фрагмент должен быть открытым статическим классом, который должен быть правильно воссоздан из состояния экземпляра Развернуть appbarlayout, когда recycliewiew прокручивается / бросается наверх Безопасность Android AIDL Загрузите, установите и удалите файл .apk на устройстве Android с программным обеспечением с веб-сайта, отличного от рынка

Как полностью свернуть SearchView после выбранного элемента?

Я боролся с этим в течение нескольких недель. У меня есть глобальный поиск, который предлагает настраиваемый список с предложениями в качестве типов пользователей. Когда пользователь выбирает параметр, я хочу, чтобы searchview возвращался в полностью скомпенсированное состояние.

Введите описание изображения здесь

Вместо этого он сжимается, но остается немного расширенным.

Введите описание изображения здесь

Я бросил все, что могу найти в этой штуке, чтобы закрыть его, но не могу, чтобы жизнь меня получила правильный метод. Вот функция:

final SearchView.OnCloseListener closeListener = new SearchView.OnCloseListener() { @Override public boolean onClose() { return closeSearch(); } }; protected boolean closeSearch() { _searchView.clearFocus(); _searchView.setQuery("", false); _searchView.setFocusable(false); _searchMenuItem.collapseActionView(); isSearchFragmentVisible(false); return false; } 

Затем поиск по закрытию производится вручную, когда элемент выбирается из пользовательского списка «предложение».

Вместо вызова вызова _searchView.onActionViewCollapsed() menuItem.collapseActionView() где _searchView = menuItem.getActionView() .

Найди его. Вызов должен быть _searchView.onActionViewCollapsed() . Почему вы называете метод «слушателя» (т. Е. Тот, который начинается с «on»), находится вне меня.

@sebastian, это на самом деле не так.

Некоторое время я занимался этой проблемой, но, наконец, мне удалось справиться с этим правильно. Вы должны вызвать menuSearch.collapseActionView (); вместо. Этот метод вызовет методActionViewCollapsed , который вы можете переопределить. Поэтому вы не вызываете слушателя;)

 MenuItem menuSearch = menu.findItem(R.id.itemSearch); SearchView searchView = (SearchView) menuSearch.getActionView(); //Don't use next line //searchView.onActionViewCollapsed(); menuSearch.collapseActionView(); 

Если вы используете панель инструментов (android.support.v7.widget.Toolbar) и соответствующий SearchView (android.support.v7.widget.SearchView) с ней, это работает:

  searchView.setQuery("", false); searchView.clearFocus(); searchView.setIconified(true); 

Вы должны очистить поиск, удалить фокус, а затем вызвать:

 searchView.setIconified(true); 

Это сработало для меня, и оно также закрыло клавиатуру по умолчанию

 MenuItemCompat.collapseActionView(menuItem); 

Возвращение false должно быть достаточным на основе последней документации и исходного кода iff iconifiedByDefault == true .

Вы случайно определили iconifiedByDefault="false" или вызвали setIconifiedByDefault(false) ?

searchView.setIconified(true); // Call this twice searchView.setIconified(true);

Меня устраивает.

Я изменил кнопку «Go» на «Next», поэтому единственный метод, который работал для меня (API 19), – это closeBtn.performClick(); closeBtn.performClick(); (Дважды нажмите кнопку «закрыть») в окне OnEditorActionListener из AutoCompleteTextView . Вы можете получить AutoCompleteTextView следующим образом:

 LinearLayout linearLayout1 = (LinearLayout) searchView.getChildAt(0); LinearLayout linearLayout2 = (LinearLayout) linearLayout1.getChildAt(2); LinearLayout linearLayout3 = (LinearLayout) linearLayout2.getChildAt(1); AutoCompleteTextView autoComplete = (AutoCompleteTextView) linearLayout3.getChildAt(0); 

Это сработало для меня searchMenuItem.collapseActionView();