2013年1月6日日曜日

動的にオプションメニューを変更する

動的にオプションメニューを変更する
dynamically changing option menu

動的にoption menuを変更する場合、addメソッドやremoveitemメソッドを使いたくなる。

しかしながら、removeitemメソッドを使った後で、addメソッドを使いMenuItemを追加しても、その追加されたMenuItemはMenuの最後尾に配置される。
追加されたMenuItemを任意の位置に配置するコマンドは無いようである。

このため、MenuItem#setVisible()を使うことになる。
    @Override
    public boolean onPrepareOptionsMenu(Menu menu) {
        MenuItem mi;
        mi = menu.findItem(R.id.Menu_Next);
        if(bDiskFile==true){//必要に応じ
            if(mi.isVisible()==false){
                mi.setVisible(true);
            }
        }
        else{
            if(mi.isVisible()==true){
                mi.setVisible(false);
            }
        }
        return super.onPrepareOptionsMenu(menu);
    }

addメソッドの第一引数にはint groupIdがある。これは、任意の複数のMenuItemを追加する場合に、それらをグループ化するものである。Java codeでaddメソッドを使って、1個1個MenuItemを追加していく場合に使う。
詳細は次のサイトにsample codeがある。
Options Menu in Android (Code)

xmlでgroupを設定するsampleは次のサイトにある。
Android 奔走記 XML で Menu

0 件のコメント:

コメントを投稿