zoukankan      html  css  js  c++  java
  • Android 动态控制OptionMenu的显示与隐藏

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

    onCreateOptionsMenu(Menu menu)

    那么该OptionMenu在打开activity时就会显示


    如果我们要默认隐藏该OptionMenu,就可以这样实现:

    activity中有这样一个方法:

    public boolean onPrepareOptionsMenu(Menu menu)

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

    1   public boolean onPrepareOptionsMenu(Menu menu){   
    2         for (int i = 0; i < menu.size(); i++){           
    3           menu.getItem(i).setVisible(false);       
    4           menu.getItem(i).setEnabled(false);   
    5         }
    6         return super.onPrepareOptionsMenu(menu);
    7    }

    如果我们需要再显示呢,很明显,我们无法再触发onPrepareOptionsMenu的调用

    所以我们需要设置两个全局变量:

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

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

     1 private void checkOptionMenu(){   
     2      if(null != aMenu){      
     3               if(optionMenuOn){         
     4                    for (int i = 0; i < aMenu.size(); i++){         
     5                         aMenu.getItem(i).setVisible(true);      
     6                         aMenu.getItem(i).setEnabled(true);        
     7                     }     
     8              }else{         
     9                    for (int i = 0; i < aMenu.size(); i++){  
    10                              aMenu.getItem(i).setVisible(false);       
    11                              aMenu.getItem(i).setEnabled(false);         
    12                     }      
    13          }   
    14     }
    15 }

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

    1 public boolean onPrepareOptionsMenu(Menu menu){   
    2         aMenu = menu
    3         checkOptionMenu();
    4         return super.onPrepareOptionsMenu(menu);
    5    }

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

    optionMenuOn = true

    然后调用

    checkOptionMenu()

    即可显示OptionMenu。

    转自:http://www.jianshu.com/p/000f31af06b5

  • 相关阅读:
    SM9-加解密
    SM9-密钥封装
    Cookie和Session的区别
    直观简单讲解单点登录的流程原理
    分布式环境下Session共享问题解决和原理讲解
    以微博开发平台为例,使用社交账号登录网站
    MD5&MD5盐值加密到BCryptPasswordEncoder
    CompletableFuture异步线程
    git clone 出现fatal: unable to access 'https://github 类错误解决方法
    Python包及其定义和引用详解
  • 原文地址:https://www.cnblogs.com/neo-java/p/7081440.html
Copyright © 2011-2022 走看看