Reputation:
I need to have oncloselistener
for my searchview
in a menu, but oncloselistener
is not working. I am not sure how to set actionexpand
to my searchview
.
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu, menu);
final SearchView searchView = (SearchView) menu.findItem(R.id.action_search).getActionView();
searchView.setQueryHint("جستجو...");
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
return false;
}
});
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
return super.onOptionsItemSelected(item);
}
Upvotes: 2
Views: 1585
Reputation: 3425
I had the same issue last week! To my surprise, you don't set the listener to the SearchView
, you actually set it to the menu item that expands it.
This is exactly what I had to do in onCreateOptionsMenu
:
item = menu.findItem(R.id.friend_fragment_search_icon);
searchView = (SearchView) MenuItemCompat.getActionView(item);
// When using the support library, the setOnActionExpandListener() method is
// static and accepts the MenuItem object as an argument
MenuItemCompat.setOnActionExpandListener(item, new MenuItemCompat.OnActionExpandListener() {
@Override
public boolean onMenuItemActionCollapse(MenuItem item) {
//the searchview has been closed
return true; // Return true to collapse action view
}
@Override
public boolean onMenuItemActionExpand(MenuItem item) {
mBtnFindFriends.hide();
return true; // Return true to expand action view
}
});
The friend_fragment_search_icon is the menu icon that opens the SearchView
.
menu.xml:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:dingding="http://schemas.android.com/apk/res-auto">
<item android:id="@+id/friend_fragment_search_icon"
android:title="@string/search_title"
android:icon="@drawable/ic_search_white_48dp"
dingding:showAsAction="always|collapseActionView"
dingding:actionViewClass="android.support.v7.widget.SearchView" />
</menu>
Upvotes: 5