私はこれに何週間も苦労してきました。ユーザーが入力するときに提案を含むカスタムリストビューを提供するグローバル検索があります。ユーザーがオプションを選択すると、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()
である必要があります。いったいなぜ「リスナー」スタイルのメソッド(つまり、「on」で始まるメソッド)を呼び出すのかは、私を超えています。
_searchView.onActionViewCollapsed()
を呼び出す代わりに、menuItem.collapseActionView()
を呼び出す_searchView = menuItem.getActionView()
を呼び出します。
@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();
Toolbar(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);
searchView.setIconified(true); // Call this twice
searchView.setIconified(true);
わたしにはできる。
「Go」ボタンを「Next」に変更したので、(API 19で)働いていた唯一の方法は、closeBtn.performClick();
closeBtn.performClick();
( 'close'ボタンを2回クリックするだけです) )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();