Hide menu items when ActionLayout is opened

actionbarsherlock, actionview, android-actionbar, menuitem

Solution

This is what i ended up using.

 @Override
    public boolean onCreateOptionsMenu(Menu menu) {

            super.onCreateOptionsMenu(menu);
            MenuInflater inflater = getSupportMenuInflater();
            inflater.inflate(R.menu.main, menu);

            MenuItem searchItem = menu.findItem(R.id.search);

            mSearchView = (SearchView) searchItem.getActionView();
            setupSearchView(searchItem);

            mSearchView.setOnSearchClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                            // hide action item
                            if (menu != null) {
                                    menu.findItem(R.id.notifications).setVisible(false);
                                    menu.findItem(R.id.share).setVisible(false);
                            }

                    }
            });
            mSearchView.setOnCloseListener(new SearchView.OnCloseListener() {
                    @Override
                    public boolean onClose() {
                            adapter.getFilter().filter("");
                            // re-show the action button
                            if (menu != null) {
                                    menu.findItem(R.id.notifications).setVisible(true);
                                    menu.findItem(R.id.share).setVisible(true);
                            }
                            return false;

                    }
            });
            return true;
    }

private void setupSearchView(MenuItem searchItem) {
         //code
}

Problem

I am using ActionBarSherlock: There are 3 menu items, of which only 1 has an ActionLayout. default_menu.xml ``` <item android:id="@+id/searchIcon" android:icon="@drawable/search_icon" android:actionLayout="@layout/search_icon_actionview" android:showAsAction="always|collapseActionView" android:title="Search"/> <item android:id="@+id/newIcon" android:icon="@drawable/new_icon" android:orderInCategory="0" android:showAsAction="ifRoom|collapseActionView" android:title="New"/> <item android:id="@+id/notificationIcon" android:icon="@drawable/notification_icon" android:orderInCategory="0" android:showAsAction="ifRoom|collapseActionView" android:title="Notifications"/> ``` if i am using the above code. Only 1st 2 icons are visible. And if i make 2nd and 3rd as Always they remain even when the actionLayout is opened when clicked on Search. I want to show all the 3 Menu Items initially and when search_icon is clicked hide every Item. I also have a doubt about my implementation, whether i am doing i the right way. In the Activity's(which has a viewPager) first Fragment: ``` @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.searchIcon: mEtSearchbar.clearFocus(); (new Handler()).postDelayed(new Runnable() { public void run() { mEtSearchbar.dispatchTouchEvent(MotionEvent.obtain(SystemClock.uptimeMillis(), SystemClock.uptimeMillis(), MotionEvent.ACTION_DOWN, 0, 0, 0)); mEtSearchbar.dispatchTouchEvent(MotionEvent.obtain(SystemClock.uptimeMillis(), SystemClock.uptimeMillis(), MotionEvent.ACTION_UP , 0, 0, 0)); } }, 100); return true; case R.id.newIcon: return true; case R.id.notificationIcon: return true; default: return super.onOptionsItemSelected(item); } } @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { // TODO Auto-generated method stub inflater.inflate(R.menu.default_menu, menu); mSearchbar = (MenuItem) menu.findItem(R.id.searchIcon); View actionview = mSearchbar.getActionView(); mEtSearchbar = ((EditText) actionview.findViewById(R.id.search_editText)); ImageView searchImage = ((ImageView) actionview.findViewById(R.id.search_image)); searchImage.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { String s = mEtSearchbar.getText().toString(); Toast.makeText(getSherlockActivity(), "Searching for: " + s, Toast.LENGTH_SHORT) .show(); } }); super.onCreateOptionsMenu(menu, inflater); } ```

Original source