美文网首页Android技术知识Android知识
Android 动态控制OptionMenu的显示与隐藏

Android 动态控制OptionMenu的显示与隐藏

作者: UniThan | 来源:发表于2016-06-24 16:23 被阅读6098次

在有些场景下,可能需要动态的显示和隐藏optionmenu,可以这样实现:
如果在activity中默认实现了方法

onCreateOptionsMenu(Menu menu)

那么该OptionMenu在打开activity时就会显示
如果我们要默认隐藏该OptionMenu,就可以这样实现:

activity中有这样一个方法:

public boolean onPrepareOptionsMenu(Menu menu) 

该方法在显示OptionMenu前会被调用,所以我们可以这样实现

  public boolean onPrepareOptionsMenu(Menu menu){   
        for (int i = 0; i < menu.size(); i++){           
          menu.getItem(i).setVisible(false);       
          menu.getItem(i).setEnabled(false);   
        }
        return super.onPrepareOptionsMenu(menu);
   }

如果我们需要再显示呢,很明显,我们无法再触发onPrepareOptionsMenu的调用
所以我们需要设置两个全局变量:

 private boolean optionMenuOn = false;  //标示是否要显示optionmenu
 private Menu aMenu;         //获取optionmenu

新建一个函数来决定是否显示optionmenu

private void checkOptionMenu(){   
     if(null != aMenu){      
              if(optionMenuOn){         
                   for (int i = 0; i < aMenu.size(); i++){         
                        aMenu.getItem(i).setVisible(true);      
                        aMenu.getItem(i).setEnabled(true);        
                    }     
             }else{         
                   for (int i = 0; i < aMenu.size(); i++){  
                             aMenu.getItem(i).setVisible(false);       
                             aMenu.getItem(i).setEnabled(false);         
                    }      
         }   
    }
}

首先我们需要aMenu赋值,然后在调用checkOptionMenu()方法,那么我们可以在onPrepareOptionsMenu中这样实现

public boolean onPrepareOptionsMenu(Menu menu){   
        aMenu = menu
        checkOptionMenu();
        return super.onPrepareOptionsMenu(menu);
   }

如果我们需要再显示OptionMenu,比如点击按钮事件中,可以设置

    optionMenuOn = true

然后调用

checkOptionMenu()

即可显示OptionMenu。

相关文章

网友评论

    本文标题:Android 动态控制OptionMenu的显示与隐藏

    本文链接:https://www.haomeiwen.com/subject/itiodttx.html