Подтвердить что ты не робот

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

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

enter image description here

Вместо этого он сжимается, но остается в слегка расширенном виде.

enter image description here

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

    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;
}

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

4b9b3361

Ответ 1

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

Ответ 2

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

Ответ 3

@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();

Ответ 4

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

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

Ответ 5

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

MenuItemCompat.collapseActionView(menuItem);

Ответ 6

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

searchView.setIconified(true);

Ответ 7

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

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

Ответ 8

Я изменил кнопку "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);

Ответ 9

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

Это работает для меня.

Ответ 10

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