menu

Android第五讲--Menu



以前写程序存在一种思维,就是前台控件放在div里的。顺着这种思想把Menu控件也认为是在Activity中,居然在Activity的onCreate函数中寻找Menu的触发函数。

   Android中的Menu是由父类的构造函数构造,Menu也不在Activity的生命周期中,Menu是由键盘上单独的Menu键调用。




http://hi.baidu.com/yuki%D0%A1%CC%C7/blog/item/8a75b1c906356d187e3e6fe7.html

在一个android创建菜单menu时,需要重写Activity的onCreateOptionsMenu(Menu menu)方法,这个方法只在第一次创建的时候调用一次,所以如果之后想对menu进行动态的修改,那么就不要再对 onCreateOptionsMenu做什么手脚了。

而需要动态修改menu的情况多用于多个activity的android app中,然而,如果在其他的activity中再使用onCreateOptionsMenu创建当前activity的menu的话,就无济于事了。。。(至少我是这样的,创建出的menu还是第一次产生的那个menu)。

于是onPrepareOptionsMenu(Menu menu)就登场了!onPrepareOptionsMenu与onCreateOptionsMenu不同的是,他在每次按下menu硬键之前会被调用,所以可以在这里动态的改变menu。如果需要创建一个全新的菜单,那么可以在onPrepareOptionsMenu中menu.clear()一下,然后重新add想要的菜单项。

public boolean onPrepareOptionsMenu(Menu menu) {
   super.onPrepareOptionsMenu(menu);
   menu.clear();
 
   menu.add(Menu.NONE, MenuGlobal.MENU_ITEM_ADD, 1, "添加").setIcon(android.R.drawable.ic_menu_add);
   menu.add(Menu.NONE, MenuGlobal.MENU_SEARCH, 2, "查看").setIcon(android.R.drawable.ic_menu_search);
   menu.add(Menu.NONE, MenuGlobal.MENU_ABOUT, 3, "关于...").setIcon(android.R.drawable.ic_menu_help);
   menu.add(Menu.NONE, MenuGlobal.MENU_QUIT, 4, "退出").setIcon(android.R.drawable.ic_menu_close_clear_cancel);
   return true;
}

如果没有clear而直接add的话,那么菜单中菜单项是会“追加”的,这样,随着你不停的点menu键,菜单项就不停的增加。

另外,android系统默认的菜单样式是支持最多3个一行,如果有4项就每行2个有2行...如果想自定义样式,可以使用xml文件定义样式。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值