it-swarm.com.ru

Как полностью свернуть 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;
}

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

25
Sebastian

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

41
Sebastian

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

49
siavach

@ Себастьян, это не совсем так.

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

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

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

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

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

searchView.setIconified(true);
6
Stephane

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

MenuItemCompat.collapseActionView(menuItem);
3
Bala Vishnu

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

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

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

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

1
LunaElf

Я изменил кнопку «Перейти» на «Далее», поэтому единственный метод, который работал для меня (в API 19), - это ввод closeBtn.performClick();closeBtn.performClick(); (дважды нажав кнопку «Закрыть») в OnEditorActionListenerAutoCompleteTextView. Вы можете получить 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);
0
Michael Zolotarevsky

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

0
inkedTechie