一、Android提供了一些简单的方法来为应用添加Menu菜单。

提供了三种类型应用菜单:

1、Options Menu:通过Menu按钮调用菜单

2、Context Menu:通过长按屏幕,调用注册了的上下文菜单

3、Submenu:通过触摸Menu Item,调用子菜单选项

二、下面通过案例,来介绍如何定义Menu菜单、处理选项事件。

1、在/res/目录下新建menu文件夹,用于存储Menu XML资源文件

2、在/res/menu/下新建menu1.xml菜单界面描述文件

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">  <item android:id="@+id/menu1" android:title="菜单1" />  <item android:id="@+id/menu2" android:title="菜单2" />
</menu>

3、显示菜单,需重写Activity中onCreateOptionsMenu(Menu menu)方法

 @Overridepublic boolean onCreateOptionsMenu(Menu menu) {MenuInflater inflater = getMenuInflater();inflater.inflate(R.menu.menu1, menu);//调用第二步中定义的Menu界面描述文件return true;}

onCreateOptionsMenu,当用户触击Menu按钮时,会调用这个方法。

4、设置“菜单1”、“菜单2”的选中事件

    @Overridepublic boolean onOptionsItemSelected(MenuItem item) {Toast.makeText(this, String.valueOf(item.getItemId()), Toast.LENGTH_LONG).show();return super.onOptionsItemSelected(item);}

这里将每次选中的选项ID显示在屏幕上。

5、重写Activity中onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo)

    @Overridepublic void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) {MenuInflater inflater = getMenuInflater();inflater.inflate(R.menu.menu1, menu);super.onCreateContextMenu(menu, v, menuInfo);}

之后当用户长按屏幕时,将会显示菜单项。

6、设置上下文菜单选项的选中事件

    @Overridepublic boolean onContextItemSelected(MenuItem item){Toast.makeText(this, String.valueOf(item.getItemId()), Toast.LENGTH_LONG).show();return super.onContextItemSelected(item);}

这里仅显示选中选项的ID

效果截图:

三、创建子菜单、单选子菜单、多选子菜单

1、子菜单

在<item/>标签内嵌套<menu/>

<menuxmlns:android="http://schemas.android.com/apk/res/android"><item android:id="@+id/submenu"android:title="菜单项1"><menu><item android:id="@+id/submenu_item1"android:title="子菜单项1" /></menu></item>
</menu>

2、单选子菜单、多选子菜单
使用group标签,设置属性android:checkableBehavior其中的三个值:single、all、none

single设置为单选,all为多选,none为普通选项

更多的属性说明可以阅读文档:http://android.toolib.net/guide/topics/resources/menu-resource.html

多选示例:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">  <item android:id="@+id/csubmenu3" android:title="多选菜单">  <menu>  <group android:checkableBehavior="all">  <item android:title="子菜单1"/>  <item android:title="子菜单2"/>  <item android:title="子菜单3"/>  </group>  </menu>  </item>
</menu>

效果如下:

单选示例:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">  <item android:id="@+id/csubmenu2" android:title="单选菜单">  <menu>  <group android:checkableBehavior="single">  <item android:title="子菜单1"/>  <item android:title="子菜单2"/>  <item android:title="子菜单3"/>  </group>  </menu>  </item>
</menu>

效果如下

更多关于Menu方面的内容,可以阅读文档:http://android.toolib.net/guide/topics/resources/menu-resource.html

Android Menu菜单相关推荐

  1. android menu菜单 实现点击后不消失_教你修改Windows万年不变的黄色文件夹,让文件也不枯燥...

    Windows系统发展至今,文件夹的颜色和样式始终是没有太多的变化,一直是一成不变的shi黄色! 尽管我们可以通过右键>属性>自定义>来修改文件夹的图标,但这种方法不仅需要我们自己去 ...

  2. android menu菜单样式,Android Menu 的样式定制

    8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? 其实做原生 Android 开发这么久,对 Android 的原生控件还是比较满意的,毕竟 Material Desig ...

  3. Android 动态更新Menu菜单

    1. 需求描述 Android Menu菜单是比较常见的功能,在ActionBar  or ToolBar上显示,点击更多(3个点),会有下拉列表菜单展示,  在工作项目中有个小需求改动: 在 Too ...

  4. android menu点击事件6,Android Menu

    Android Menu 1.Android Menu(菜单)分为两种 选项菜单 OptionMenu 上下文菜单ContextMenu 2. 实现目录的基本操作 在xml文件中定义布局文件 重写on ...

  5. android中menu菜单扩增_【已解决】Android添加Menu菜单

    [背景] 想要在Android中添加Menu菜单. 目前已经有了menu的xml定义了: /res/menu/activity_main.xml android:id="@+id/menu_ ...

  6. android选项菜单源代码,Android应用程序----UI界面控件(菜单menu)

    菜单是应用程序中非常重要的组成部分,能够在不占用界面空间的前提下,为应用程序提供了统一的功能和设置界面,并为程序开发人员提供了易于使用的编程接口 Android系统支持三种菜单 选项菜单(Option ...

  7. android 按钮 菜单,(期末要考啊)Android的menu(菜单)按钮的使用

    (期末要考啊)Android的menu(菜单)按钮的使用 安卓 Android的菜单按钮 使用xml的方式创建菜单项在res下的menu目录下新建一个main.xml文件,以menu为根节点,添加一个 ...

  8. Android 应用开发(第2章)---如何增加menu菜单

    1.Android studio 增加menu 菜单 新建MenuTest  project文件 1).在res上面右键->New->Android resource directory ...

  9. android中menu菜单扩增_在Android中的工具栏中添加菜单

    菜单对于将多个动作放入其中非常有用,尤其是那些使用频率较低并且不需要自己的按钮的动作. 菜单显示在Android的工具栏上. 通常使用支持工具栏,但如果没有相应的类库,下面的方法也可以实现. 1.制作 ...

最新文章

  1. 科普:教你如何看懂 JavaGC 日志
  2. android设置控件的坐标,Android中使PopupWindow显示在指定控件的上下左右!
  3. android中string.xml使用总结,string.xml 的作用以及意义——国际化应用
  4. python 03 字符串详解
  5. [数据结构] 希尔排序
  6. L - 土拨鼠掷鼬鼠(二分查找)
  7. 使用js对来判断一个字符串中括号是否平衡匹配
  8. linux date抖动,一场由fork引发的超时,让我们重新探讨了Redis的抖动问题
  9. 四象限运行模式_信息流广告推广怎么选择正确的出价模式?
  10. python爬取新闻网站内容findall函数爬取_Python爬取新闻网标题、日期、点击量
  11. RTMP中FLV流到标准h264、aac的转换
  12. 深度学习模型的前馈运算与反馈运算
  13. IIS下安装php5.3
  14. NeatUpload——支持大文件上传的控件
  15. c语言程序设计的反思,C语言程序设计教学反思
  16. 鸿蒙汽车电动尾门工厂,汽车智能电动尾门为什么能成为汽车电子行业“新宠”?...
  17. MicroSIP软电话安装配置说明
  18. 【Zigbee】进阶篇(2) Zigbee协议栈中OSAL的执行流程
  19. 圆圈头像制作css,通过CSS3实现圆形头像显示
  20. 实现antd中Form、Form.Item组件

热门文章

  1. proto定义嵌套列表
  2. 从0开始学股票进阶课之如何寻找热点板块
  3. 面对大事情时的表现,可看出来一个人的品质和水平
  4. vue-element-admin 换肤功能,登录后不同权限不同皮肤,刷新不会失效
  5. 32k核 oracle,Windows 操作系统(不管32bit还是64bit)是不支持oracle db的 db_32k_cache_size参数的。...
  6. 跨境seo引流的13种方法
  7. 【云原生|K8s系列第1篇】:K8s的基础概念、组件架构及实战安装
  8. 苹果税遭重击!法院判决:App Store必须90天内开放第三方支付,苹果市值一夜蒸发5477亿...
  9. Java数据结构入门以及数据结构和算法的关系
  10. vscode调试不出现C CPP,lauch json不自动填充cppgdb选项的替代方案