web-dev-qa-db-ja.com

SearchViewが展開されているかどうかを検出する方法は?

私は次のようなメニュー項目を持っています:

_<item
    Android:id="@+id/action_search"
    Android:title="search"
    app:actionViewClass="Android.support.v7.widget.SearchView"
    app:showAsAction="always"/>

@Override
public boolean onCreateOptionsMenu( Menu menu ) {
  getMenuInflater().inflate( R.menu.passenger, menu );
  searchItem = menu.findItem( R.id.action_search );
  searchView = (SearchView)MenuItemCompat.getActionView( searchItem );
  searchView.setSubmitButtonEnabled( false );
  return super.onCreateOptionsMenu( menu );
}
_

SearchViewが展開されているか確認したい。

searchItem.isActionViewExpanded()searchView.isHovered()を試しましたが、どれも機能しませんでした。

何が足りないのですか?

TIA

15
injecteer

SearchItem.isIconified()を試してください

SearchViewの現在のアイコン化された状態を返します。

戻り値

searchViewが現在アイコン化されている場合はtrue、検索フィールドが完全に表示されている場合はfalse。

http://developer.Android.com/reference/Android/widget/SearchView.html#isIconified%28%29

27
Vincent Ngo
searchView.setOnSearchClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //do what you want when search view expended
            }
        });
        searchView.setOnCloseListener(new SearchView.OnCloseListener() {
            @Override
            public boolean onClose() {
                //do what you want  searchview is not expanded
                return false;
            }
        });
13
Uttam Meerwal

これを試してください。ユーザーが検索アイコンをクリックしたときに検出されます。

Kotlinの場合:

    searchView.setOnQueryTextFocusChangeListener { _ , hasFocus ->
        if (hasFocus) {
            // searchView expanded
        } else {
            // searchView not expanded
        }
    }

In Java:

searchView.setOnQueryTextFocusChangeListener(new View.OnFocusChangeListener() {
    @Override
    public void onFocusChange(View v, boolean hasFocus) {
        if (hasFocus) {
            // searchView expanded
        } else {
            // searchView not expanded
        }
    }
});
7
ethiopians