android menu 实现动态修改menu。(gray)

在Android中,若要动态修改菜单Menu,不应在onCreateOptionsMenu方法中操作,而应使用onPrepareOptionsMenu。onPrepareOptionsMenu会在每次显示菜单前调用,可用于更新菜单项。可以通过menu.clear()清除原有菜单,然后使用menu.add()添加新的菜单项。如果不清除直接添加,菜单项会持续增加。此外,Android默认菜单样式可容纳3个菜单项一行,可通过XML定义自定义样式。
摘要由CSDN通过智能技术生成

       在一个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);

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Android 中,动态创建菜单可以使用以下步骤: 1. 在 res/menu 目录下创建一个 XML 文件,定义菜单项的布局和属性。 2. 在 Activity 中重写 onCreateOptionsMenu() 方法,使用 MenuInflater.inflate() 方法加载菜单资源文件,并将菜单项添加到菜单中。 3. 在 Activity 中重写 onOptionsItemSelected() 方法,处理用户选择的菜单项。 下面是一个示例代码,演示如何动态创建菜单: ```java public class MainActivity extends AppCompatActivity { private Menu mMenu; @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main_menu, menu); mMenu = menu; return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle item selection switch (item.getItemId()) { case R.id.menu_item1: // Do something return true; case R.id.menu_item2: // Do something return true; default: return super.onOptionsItemSelected(item); } } public void addMenuItem(int id, String title) { if (mMenu != null) { MenuItem item = mMenu.add(Menu.NONE, id, Menu.NONE, title); item.setIcon(R.drawable.ic_launcher); item.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM); } } public void removeMenuItem(int id) { if (mMenu != null) { mMenu.removeItem(id); } } } ``` 在上面的代码中,我们使用 onCreateOptionsMenu() 方法加载菜单资源文件,然后在 Activity 中定义了两个方法 addMenuItem() 和 removeMenuItem(),分别用于动态添加和移除菜单项。在每个菜单项的事件处理方法中,我们可以根据菜单项的 id 执行相应的操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值