Reputation: 20699
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
Reputation: 4321
You can use isShowing.
if (searchView.isShowing) {
searchView.hide()
} else {
goBack()
}
Upvotes: 0
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
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
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