I have a function where I need the menu item to appear when the searchView expands and disappears when the searchView closes. I have setVisible as false for the element when it is expanded, it makes the menu item disappear when the searchView returns to the routine state, but leaves empty space.
Screenshots:
Is there an option in which the searchView icon can return to its original location?
SearchManager searchManager =(SearchManager)getSystemService(Context.SEARCH_SERVICE);
final MenuItem menuitem=menu.findItem(R.id.action_search);
final MenuItem locationitem=menu.findItem(R.id.action_location).setVisible(false);
SearchView searchView = (SearchView) menuitem.getActionView();
if(null!=searchManager ) {
searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
}
searchView.setIconifiedByDefault(true);
searchView.setClickable(true);
searchView.setOnSuggestionListener(new SearchView.OnSuggestionListener() {
@Override
public boolean onSuggestionClick(int position) {
return true;
}
@Override
public boolean onSuggestionSelect(int position) {
return true;
}
});
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String s) {
return false;
}
@Override
public boolean onQueryTextChange(String s) {
populateAdapter(s);
return false;
}
});
searchView.addOnLayoutChangeListener(new View.OnLayoutChangeListener() {
@Override
public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) {
SearchView searchView = (SearchView) v;
if (searchView.isIconified()) {
locationitem.setVisible(false);
Log.d("Trial","Working!!");
fr=new Fragment_Two();
FragmentManager fm=getFragmentManager();
FragmentTransaction ft=fm.beginTransaction();
ft.replace(R.id.fragmentswitcher,fr);
ft.commit();
}
else{
locationitem.setVisible(true);
Log.d("Trial","Working too!!");
MenuItemCompat.setShowAsAction(menuitem, MenuItemCompat.SHOW_AS_ACTION_ALWAYS);
MenuItemCompat.setShowAsAction(locationitem, MenuItemCompat.SHOW_AS_ACTION_ALWAYS);
fr=new Fragment_One();
FragmentManager fm=getFragmentManager();
FragmentTransaction ft=fm.beginTransaction();
ft.replace(R.id.fragmentswitcher,fr);
ft.commit();
View newView=fr.getView();
}
}
});
source
share