android控件之menu(二)

转自http://blog.csdn.net/flowingflying/article/details/6317632

步骤3:增加某些变化

在上面的步骤中,已经学习了Option Menu的基本处理,但是我们需要增加一些变化

3.1 每次显示menu时根据实际的情况进行适配

结果如图

android控件之menu(二)_第1张图片

onCreateOptionsMenu()只在第一次按Menu按键时触发,有些时候,我们希望每次显示的菜单有一些变化,例如这个例子中,我们希望菜单不显示当前的分割线高度,只出现需要改变的高度,如图所示,当分割线为16pix时,菜单将不出现16pix的item。这样可以使用onPrepareOptionsMenu()。当用户第一次按Menu键时,先执行onCreateOptionsMenu( ),然后执行onPrepareOptionsMenu();当用户第二次,第三次,第N次按Menu建时,执行onPrepareOptionsMenu(),因此我们可以在onPrepareOptionsMenu()中处理每次的变化。本例如下

    public boolean onPrepareOptionsMenu(Menu menu) {
        /* 将所有的item设置有可视,好烦,想起了设置GourpID的好处,可以使用menu.setGroupVisible(Menu.NONE, true)代替。但是合理的,我们应当设置自己的GroupID,因此我们仍然每个item进行设置*/
        menu.findItem(ONE_ID).setVisible(true);
        menu.findItem(EIGHT_ID).setVisible(true);
        
... 类同,设置menu item可视,略去... 
        switch(getListView().getDividerHeight()){//如果需要设置的高度和当前的高度一致,不显示。
        case 1:
            menu.findItem(ONE_ID).setVisible(false); 
            break;
        case 8:
            menu.findItem(EIGHT_ID).setChecked(true);
            break;

        ... 类同,略去...
        default:
            break;
        }     
        return super.onPrepareOptionsMenu(menu);
    }

你可能感兴趣的:(android控件之menu(二))