アクションバーのメニューを隠す方法

アクションバーに表示したメニューアイテムを隠す方法が分からずに調べたのでその方法を紹介します。

** 注意 ** ここで紹介する方法ではshowAsAction属性がalwaysに設定されている以外の普通のアイテムも隠れます。

では、どうやるかというと、まず次のようにonCreateOptionsMenuで特定のフラグが立っているときだけアイテムを隠せばOKです。

    /** メニューアイテムを隠すかどうかフラグ */
    boolean isHideOptionsMenu = false;

    @Override
    public boolean onCreateOptionsMenu(Menu menu)
    {
        getSupportMenuInflater().inflate(R.menu.main, menu);
        
        /** もしフラグがtrueなら隠す。 */
        if(isHideOptionsMenu == true){
            for(int i = 0; i < menu.size(); ++i)
                menu.getItem(i).setVisible(false);
        }
        
        return true;
    }

isHideOptionsMenuというフラグをたて、それがtrueのときだけすべてのメニューアイテムを隠すようにしてあります。

次に問題になるのが任意のタイミング(例えばあるボタンを押したときなど)でメニューアイテムをどうやって隠すかということですが、次のコードのようにinvalidateOptionsMenuメソッドを呼び出します。

isHideOptionsMenu = true;
invalidateOptionsMenu();

こうすればonCreateOptionsMenuメソッドを何回でも任意のタイミングで呼び出すことができます。

** 注意 ** もしActionbarSherlockライブラリを使っている場合はsupportInvalidateOptionsMenuメソッドを呼び出す必要があります。

以上、アクションバーからメニューアイテムを隠す方法でした。では、また!!

関連項目
プライバシーポリシー