web-dev-qa-db-ja.com

アイテムを選択した後にSearchViewを完全に折りたたむ方法は?

私はこれに何週間も苦労してきました。ユーザーが入力するときに提案を含むカスタムリストビューを提供するグローバル検索があります。ユーザーがオプションを選択すると、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;
}

次に、カスタム「提案」リストビューからアイテムが選択されると、クローズ検索が手動で呼び出されます。

26
Sebastian

それを見つけた。呼び出しは_searchView.onActionViewCollapsed()である必要があります。いったいなぜ「リスナー」スタイルのメソッド(つまり、「on」で始まるメソッド)を呼び出すのかは、私を超えています。

43
Sebastian

_searchView.onActionViewCollapsed()を呼び出す代わりに、menuItem.collapseActionView()を呼び出す_searchView = menuItem.getActionView()を呼び出します。

53
siavach

@sebastianは実際には正しくありません。

私はしばらくこの問題に悩まされてきましたが、ようやく適切な方法でそれを処理することができました。代わりにmenuSearch.collapseActionView();を呼び出すことになっています。このメソッドはonActionViewCollapsedを呼び出しますが、これはオーバーライドできます。したがって、リスナーを呼び出さないでください;)

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

Toolbar(Android.support.v7.widget.Toolbar)とそれに対応するSearchView(Android.support.v7.widget.SearchView)を使用している場合、これ動作:

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

検索をクリアし、フォーカスを削除してから呼び出してください:

searchView.setIconified(true);
7
Stephane

これは私のために働いたし、デフォルトでキーボードを閉じた

MenuItemCompat.collapseActionView(menuItem);
3
Bala Vishnu

falseを返すことは、最新の ドキュメント および ソースコードiff_iconifiedByDefault == true_。

おそらく_iconifiedByDefault="false"_を定義したか、setIconifiedByDefault(false)と呼ばれましたか?

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

わたしにはできる。

1
LunaElf

「Go」ボタンを「Next」に変更したので、(API 19で)働いていた唯一の方法は、closeBtn.performClick();closeBtn.performClick();( 'close'ボタンを2回クリックするだけです) )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);

これは私のために働いたsearchMenuItem.collapseActionView();

0
inkedTechie