转:android menu 实现动态修改menu
2012-08-08 14:31
435 查看
转自:http://blog.csdn.net/pengruikeji/article/details/6432807
在一个android创建菜单menu时,需要重写Activity的onCreateOptionsMenu(Menu menu)方法,这个方法只在第一次创建的时候调用一次,所以如果之后想对menu进行动态的修改,那么就不要再对onCreateOptionsMenu做什么手脚了。
于是就要用到onPrepareOptionsMenu(Menu menu)方法了。onPrepareOptionsMenu与onCreateOptionsMenu不同的是,他在每次按下menu硬键之前会被调用,所以可以在这里动态的改变menu。如果需要创建一个全新的菜单,那么可以在
public boolean onPrepareOptionsMenu(Menu menu) {
super.onPrepareOptionsMenu(menu);
menu.clear();
cb=(CheckBox)findViewById(R.id.my_mms_item_checkbox);
menu.add(0, MENU_01, 0, "新建短信").setIcon(R.drawable.menu_new_mms);
Log.d(TAG,"cb.getVisibility():"+cb.getVisibility());
if(cb.getVisibility()==View.GONE)
menu.add(0, MENU_02, 0, "多选").setIcon(R.drawable.mms_multiple);
else
{
menu.add(0, MENU_03, 0, "取消多选").setIcon(R.drawable.mms_multiple);
menu.add(0, MENU_04, 0, "选择全部").setIcon(R.drawable.mms_multiple);
}
return true;
}
如果没有clear而直接add的话,那么菜单中菜单项是会“追加”的,这样,随着你不停的点menu键,菜单项就不停的增加。
另外,android系统默认的菜单样式是支持最多3个一行,如果有4项就每行2个有2行...如果想自定义样式,可以使用xml文件定义样式。
在一个android创建菜单menu时,需要重写Activity的onCreateOptionsMenu(Menu menu)方法,这个方法只在第一次创建的时候调用一次,所以如果之后想对menu进行动态的修改,那么就不要再对onCreateOptionsMenu做什么手脚了。
于是就要用到onPrepareOptionsMenu(Menu menu)方法了。onPrepareOptionsMenu与onCreateOptionsMenu不同的是,他在每次按下menu硬键之前会被调用,所以可以在这里动态的改变menu。如果需要创建一个全新的菜单,那么可以在
public boolean onPrepareOptionsMenu(Menu menu) {
super.onPrepareOptionsMenu(menu);
menu.clear();
cb=(CheckBox)findViewById(R.id.my_mms_item_checkbox);
menu.add(0, MENU_01, 0, "新建短信").setIcon(R.drawable.menu_new_mms);
Log.d(TAG,"cb.getVisibility():"+cb.getVisibility());
if(cb.getVisibility()==View.GONE)
menu.add(0, MENU_02, 0, "多选").setIcon(R.drawable.mms_multiple);
else
{
menu.add(0, MENU_03, 0, "取消多选").setIcon(R.drawable.mms_multiple);
menu.add(0, MENU_04, 0, "选择全部").setIcon(R.drawable.mms_multiple);
}
return true;
}
如果没有clear而直接add的话,那么菜单中菜单项是会“追加”的,这样,随着你不停的点menu键,菜单项就不停的增加。
另外,android系统默认的菜单样式是支持最多3个一行,如果有4项就每行2个有2行...如果想自定义样式,可以使用xml文件定义样式。
相关文章推荐
- android menu 实现动态修改menu。(gray)
- Android动态修改ToolBar的Menu菜单示例
- 在android中利用多线程实现对控件的更新(动态修改文本框中的值)。简述原理并上传代码。
- 在android中利用多线程实现对控件的更新(动态修改文本框中的值)。简述原理并上传代码。 .
- Android 4.2 通过修改FrameWork源码实现动态隐藏导航栏,实现全屏
- Android动态修改图片颜色的实现方式分析
- Android之动态修改system/etc目录下文件的一种实现方式-SELinux
- Android 4.2 通过修改FrameWork源码实现动态隐藏导航栏,实现全屏
- Android之动态修改system/etc目录下文件的一种实现方式-SELinux
- Android编程心得-使用ActionBar+Fragment+ViewPager实现动态切换Menu效果
- Android动态修改图片颜色的实现方式分析
- Android入门之Menu动态修改(纯java)
- Android动态修改图片颜色的实现方式分析
- Android动态修改ToolBar的Menu菜单
- Android中对HelloCharts的修改,实现动态绘制折线图
- Android动态修改ToolBar的Menu菜单
- Android Menu的几种实现方式
- Build 动态修改 AndroidManifest 相关配置
- Js 动态修改事件实现
- Android Launcher分析和修改13——实现Launcher编辑模式(1) 壁纸更换