Android ActionBar Action Items
actionbarsherlock, android, android-actionbar
Solution
I'm doing the same as follows:
private Menu mainMenu = null;
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
MenuInflater inflater = getSupportMenuInflater();
inflater.inflate(R.menu.activity_main, menu);
mainMenu = menu;
MenuItem searchItem = menu.findItem(R.id.action_search);
MenuItem categoryItem = menu.findItem(R.id.action_category);
MenuItem sortItem = menu.findItem(R.id.action_sort);
mSearchView = (SearchView) searchItem.getActionView();
mSearchView.setOnSearchClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//hide action item
if (mainMenu != null)
mainMenu.findItem(R.id.quick_actions).setVisible(false);
}
});
mSearchView.setOnCloseListener(new SearchView.OnCloseListener() {
@Override
public boolean onClose() {
//re-show the action button
if (mainMenu != null)
mainMenu.findItem(R.id.quick_actions).setVisible(true);
return false;
}
});
//setupSearchView(searchItem, categoryItem, sortItem);
return true;
}
Problem
I am using Actionbar Sherlock and and i have three buttons - Search with a SearchView - Categories which opens a Dialog Fragment - Sort which opens a hiddent drop down menu When i click the Search Button the SearchView text expands. When the Search view has expanded i want to hide all the other icons from the action bar and it should return when i exit the expanded searchView mode. ``` public class MainActivity extends SherlockFragmentActivity implements SearchView.OnQueryTextListener { protected static CharSequence[] _categories = { "Amusement Park", "Bird Sanctuary", "Wild Life", "River", "Hill Station", "Temple" }; protected static boolean[] _selections = new boolean[_categories.length]; public SearchView mSearchView; private TextView mStatusView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } @Override public boolean onCreateOptionsMenu(Menu menu) { super.onCreateOptionsMenu(menu); MenuInflater inflater = getSupportMenuInflater(); inflater.inflate(R.menu.activity_main, menu); MenuItem searchItem = menu.findItem(R.id.action_search); MenuItem categoryItem = menu.findItem(R.id.action_category); MenuItem sortItem = menu.findItem(R.id.action_sort); mSearchView = (SearchView) searchItem.getActionView(); setupSearchView(searchItem, categoryItem, sortItem); return true; } public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { /* * case R.id.action_go: Intent i = new Intent(MainActivity.this, * PlaceActivity.class); startActivity(i); break; */ /* * case R.id.action_search: Toast.makeText(this, "Searh", * Toast.LENGTH_LONG).show(); break; */ case R.id.action_category: showDialog(); break; case R.id.action_sort_alpha_az: Toast.makeText(this, "Alpha AZ", Toast.LENGTH_LONG).show(); break; case R.id.action_sort_alpha_za: Toast.makeText(this, "Alpha ZA", Toast.LENGTH_LONG).show(); break; case R.id.action_sort_dist_nf: Toast.makeText(this, "Dist NF", Toast.LENGTH_LONG).show(); break; case R.id.action_sort_dist_fn: Toast.makeText(this, "Dist FN", Toast.LENGTH_LONG).show(); break; default: // return super.onOptionsItemSelected(item); break; } return true; } private void setupSearchView(MenuItem searchItem, MenuItem categoryItem, MenuItem sortItem) { mSearchView.setIconifiedByDefault(true); searchItem.setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_ALWAYS | MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW); } public boolean onQueryTextChange(String newText) { Log.i("Nomad", "onQueryTextChange"); return false; } public boolean onQueryTextSubmit(String query) { Log.i("Nomad", "onQueryTextSubmit"); return false; } public boolean onClose() { Log.i("Nomad", "onClose"); return false; } protected boolean isAlwaysExpanded() { return false; } } ```