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

Android 动态控制OptionMenu的显示与隐藏的更多相关文章

  1. Android 软键盘的显示和隐藏,这样操作就对了

    一.前言 如果有需要用到输入的地方,通常会有需要自动弹出或者收起软键盘的需求.开篇明义,本文会讲讲弹出和收起软键盘的一些细节,最终还会从源码进行分析. 想要操作软键盘,需要使用到 InputMetho ...

  2. android 软键盘的显示与隐藏问题的研究

    在android中,常常会和输入法的软件键盘交互.在Manifest文件中,系统给activity的一个属性-windowSoftInputMode来控制输入法的显示方式. 该属性提供了Activit ...

  3. Android Visibility控件显示和隐藏

    Android控件显示和隐藏 visibility 可见(visible) XML文件:android:visibility="visible" Java代码:view.setVi ...

  4. Android之密码的显示与隐藏

    很多应用都是显示与隐藏密码的功能. 之前的项目都没这个功能要求,也没有专门研究这个.最近项目有加这个功能,我这里也刚好整理一下. 我的思路是设置EditText的InputType.代码如下: if ...

  5. Android下拉上滑显示与隐藏Toolbar另一种实现

    public abstract class RecyclerViewScrollListener extends RecyclerView.OnScrollListener { private sta ...

  6. android软键盘的显示和隐藏

    显示: InputMethodManager imm = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE); imm.toggle ...

  7. Android动态控制状态栏显示和隐藏

    记得之前有朋友在留言里让我写一篇关于沉浸式状态栏的文章,正巧我确实有这个打算,那么本篇就给大家带来一次沉浸式状态栏的微技巧讲解. 其实说到沉浸式状态栏这个名字我也是感到很无奈,真不知道这种叫法是谁先发 ...

  8. Android文本输入框(EditText)切换密码的显示与隐藏

    package cc.c; import android.app.Activity; import android.os.Bundle; import android.text.Selection; ...

  9. Android监听键盘显示和隐藏

    问题概况:横板cocos2dx游戏,点击输入框弹出键盘时,界面要求跟随网上平易,不能挡住输入框.这种问题只出现在非全屏键盘到情况下. 方案1:mainActivity重写onconfiguration ...

随机推荐

  1. js数组用法

    去面试的时候问到我一个问题,你能说出来多少种数组的方法跟用法,我当时只说出来十一个,回来以后才想起来还有很多种,现在整理一下,没有排名,想起那个写那个 1:forEach 从头遍历数组,没有返回值,有 ...

  2. HTML的表格标签,列表标签,表单标签,HTML5有哪些新特性

    欢迎大家去博客冰山一树Sankey,浏览效果更好.直接右上角搜索该标题即可 博客园主页:博客园主页-冰山一树Sankey CSDN主页:CSDN主页-冰山一树Sankey 前端学习:学习地址:黑马程序 ...

  3. 推荐 5 个 yyds 的开源 Python Web 框架

    提到 Python 的 Web 框架,第一反应就是老三样,Django,Flask 和 Tornado.如果按流行度来排名的话,应该也是这个顺序. 在 2016 年,发布了一款 Web 框架,叫 Sa ...

  4. 手写 Vue2 系列 之 patch —— diff

    前言 上一篇文章 手写 Vue2 系列 之 初始渲染 中完成了原始标签.自定义组件.插槽的的初始渲染,当然其中也涉及到 v-bind.v-model.v-on 指令的原理.完成首次渲染之后,接下来就该 ...

  5. linux指令_张三

    1.基础指令语法 ls (路径) 含义:列出当前工作目录下的所有文件/文件夹的名称 pwd(printworkingdirectory,打印当前工作目录) cd (路径)       作用:用于切换当 ...

  6. 旅游清单一步搭建,Angular助力你的踏春计划

    春天的脚步愈发临近,相信很多小伙伴已经开始规划自己的踏春计划了,无论是欣赏名胜古迹,还是走访风土人文,你都需要提前准备一份旅游清单!有了这款Angular旅游计划应用,从地点到预算,它都能帮助你创建自 ...

  7. Linux配置FTP(vsftpd)服务和无法上传下载问题解决

    vsftpd的配置说明 ftp的配置文件主要有三个,位于/etc/vsftpd/目录下,分别是: ftpusers 该文件用来指定那些用户不能访问ftp服务器. user_list 该文件用来指示的默 ...

  8. ansible 四常用模块

    常用模块 Ansible默认提供了很多模块来供我们使用.在Linux中,我们可以通过 ansible-doc -l 命令查看到当前Ansible支持哪些模块,通过 ansible-doc -s [模块 ...

  9. docker基础命令,常用操作

    docker基础命令 使用docker镜像 获取镜像 从docker registry获取镜像的命令是docker pull.命令格式是: docker pull [选项][docker regist ...

  10. 5月8日 python学习总结 mysql 建表操作

    一 .创建表的完整语法 create table 表名( 字段名1 类型[(宽度) 约束条件],字段名2 类型[(宽度) 约束条件],字段名3 类型[(宽度) 约束条件]); 解释: 类型:使用限制字 ...