在有些场景下,可能需要动态的显示和隐藏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

最新文章

  1. ffmpeg-20160926[27]-bin.7z
  2. Error Code: 1175.You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column.
  3. BZOJ 1026 【SCOI2009】 windy数
  4. simple_html_dom使用小结
  5. 安装npm
  6. (转)android ListView详解
  7. python 循环while和for in
  8. QT5 r 加入qwtplot3d 三维库
  9. cf B. Little Dima and Equation
  10. java.nio分析软件包(三)---Charset理解力
  11. 基于ElementUI的网站换主题的一些思考与实现
  12. WebService之CXF注解之一(封装类)
  13. Docker学习笔记-简单运行.netcore
  14. Solr的Filed中indexed与stored属性
  15. tomcat -&gt; 简介&amp;部署
  16. winobj
  17. Asp.net Vnext 模块化实现
  18. 【laravel5.4】中jquery的post Ajax提交
  19. 在定时任务中慎用pause,否则造成弹窗没关闭,下一次任务不会成功执行
  20. sqlserver全备份,差异备份和日志备份

热门文章

  1. JZ-043-左旋转字符串
  2. sql数据处理
  3. ASP.NET Core框架探索之Authentication
  4. Netty学习(二)使用及执行流程
  5. java 中判断输入是否合法 if (变量名.hasNextInt())
  6. Mybatis使用注解开发(未完)
  7. SQL注入工具sqlmap的使用
  8. WAF绕过的各种姿势
  9. 钓鱼+DNS欺骗学习笔记
  10. HTTP 错误 500.21 - Internal Server Error 解决方案【转】