在有些场景下,可能需要动态的显示和隐藏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. SQL Server内置的HTAP技术

    SQL Server内置的HTAP技术 目录 背景 SQL Server在OLAP上的发展 SQL Server的初代HTAP SQL Server逐渐增强的HTAP SQL Server列存总结 H ...

  2. 学习c语言时对一些疑问的测试

    #include<stdio.h>#include<string.h> int main(){/* 1 */// int a[3][3]={6,1,2,3,4,5};// in ...

  3. HelloWorld:通过demo,构建黑盒模型

    在<源码阅读四步走,这才是阅读源码的正确姿势>一文中,给出了源码阅读的完整步骤. 本篇是<如何高效阅读源码>专题的第四篇,正式开始讲解阅读源码的具体方法! 程序界有个老传统,学 ...

  4. linux shell编程流程控制

    条件选择 单分支条件 多分支条件 选择执行if语句 单分支 if 判断条件;then 条件为真的分支代码 fi 双分支 if 判断条件; then 条件为真的分支代码 else 条件为假的分支代码 f ...

  5. Guava中这些Map的骚操作,让我的代码量减少了50%

    原创:微信公众号 码农参上,欢迎分享,转载请保留出处. Guava是google公司开发的一款Java类库扩展工具包,内含了丰富的API,涵盖了集合.缓存.并发.I/O等多个方面.使用这些API一方面 ...

  6. Scipy的stats模块包含了多种概率分布的随机变量,随机变量分为连续和离散两种。+忽略程序中警告信息+np.newaxis解释

  7. 《Unity shader入门精要》复习<第13章 关于NDC坐标和深度/法线纹理>

    分为三个地方讲解. NDC(Normalize Device Coordinates)归一化的设备坐标 NDC坐标是世界空间坐标通过MVP变换之后再进行归一化得到的坐标.只需要再一步变换就能得到屏幕空 ...

  8. JavaWeb 07_创建web项目连接MySQL实现注册登录功能

    一.创建一个web项目,参照JW/01_创建web项目及部署 二.在NAVICat 里建数据库 db_01,建表tb_user ,字段UName .Pwd 三.在web下创建一个Directory, ...

  9. Mybatis传递参数的几种方式

    使用Map传递 优点:直接在sql中取出key即可 缺点:适用于小项目,不符合大公司规范 对象传递参数 优点:符合标准规范 缺点:麻烦 3.只有一个基本类型参数的情况下,直接在sql中取中 4.多个参 ...

  10. SignalR 入门 .netCore实现聊天室

    SignalR 入门 .netCore实现聊天室 本文根据微软SignalR 简介 | Microsoft Docs 和 ASP.NET Core SignalR 简介 | Microsoft Doc ...