injecteer
injecteer

Reputation: 20699

How to detect if SearchView is expanded?

I have the menu items like:

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

I want to check if the searchView is expanded.

I tried searchItem.isActionViewExpanded() and searchView.isHovered() but none of them worked.

What am I missing?

TIA

Upvotes: 25

Views: 13815

Answers (4)

OhhhThatVarun
OhhhThatVarun

Reputation: 4321

You can use isShowing.

if (searchView.isShowing) {
    searchView.hide()
} else {
    goBack()        
}

Upvotes: 0

ethiopians
ethiopians

Reputation: 299

Try this, it will detect when the user clicks on the search icon:

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

Upvotes: 20

Uttam Meerwal
Uttam Meerwal

Reputation: 324

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

Upvotes: 18

Vincent Ngo
Vincent Ngo

Reputation: 456

Try searchItem.isIconified()

Returns the current iconified state of the SearchView.

Returns

true if the SearchView is currently iconified, false if the search field is fully visible.

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

Upvotes: 38

Related Questions