Android Menu菜单
一、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菜单相关推荐
- android menu菜单 实现点击后不消失_教你修改Windows万年不变的黄色文件夹,让文件也不枯燥...
Windows系统发展至今,文件夹的颜色和样式始终是没有太多的变化,一直是一成不变的shi黄色! 尽管我们可以通过右键>属性>自定义>来修改文件夹的图标,但这种方法不仅需要我们自己去 ...
- android menu菜单样式,Android Menu 的样式定制
8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? 其实做原生 Android 开发这么久,对 Android 的原生控件还是比较满意的,毕竟 Material Desig ...
- Android 动态更新Menu菜单
1. 需求描述 Android Menu菜单是比较常见的功能,在ActionBar or ToolBar上显示,点击更多(3个点),会有下拉列表菜单展示, 在工作项目中有个小需求改动: 在 Too ...
- android menu点击事件6,Android Menu
Android Menu 1.Android Menu(菜单)分为两种 选项菜单 OptionMenu 上下文菜单ContextMenu 2. 实现目录的基本操作 在xml文件中定义布局文件 重写on ...
- android中menu菜单扩增_【已解决】Android添加Menu菜单
[背景] 想要在Android中添加Menu菜单. 目前已经有了menu的xml定义了: /res/menu/activity_main.xml android:id="@+id/menu_ ...
- android选项菜单源代码,Android应用程序----UI界面控件(菜单menu)
菜单是应用程序中非常重要的组成部分,能够在不占用界面空间的前提下,为应用程序提供了统一的功能和设置界面,并为程序开发人员提供了易于使用的编程接口 Android系统支持三种菜单 选项菜单(Option ...
- android 按钮 菜单,(期末要考啊)Android的menu(菜单)按钮的使用
(期末要考啊)Android的menu(菜单)按钮的使用 安卓 Android的菜单按钮 使用xml的方式创建菜单项在res下的menu目录下新建一个main.xml文件,以menu为根节点,添加一个 ...
- Android 应用开发(第2章)---如何增加menu菜单
1.Android studio 增加menu 菜单 新建MenuTest project文件 1).在res上面右键->New->Android resource directory ...
- android中menu菜单扩增_在Android中的工具栏中添加菜单
菜单对于将多个动作放入其中非常有用,尤其是那些使用频率较低并且不需要自己的按钮的动作. 菜单显示在Android的工具栏上. 通常使用支持工具栏,但如果没有相应的类库,下面的方法也可以实现. 1.制作 ...
最新文章
- 科普:教你如何看懂 JavaGC 日志
- android设置控件的坐标,Android中使PopupWindow显示在指定控件的上下左右!
- android中string.xml使用总结,string.xml 的作用以及意义——国际化应用
- python 03 字符串详解
- [数据结构] 希尔排序
- L - 土拨鼠掷鼬鼠(二分查找)
- 使用js对来判断一个字符串中括号是否平衡匹配
- linux date抖动,一场由fork引发的超时,让我们重新探讨了Redis的抖动问题
- 四象限运行模式_信息流广告推广怎么选择正确的出价模式?
- python爬取新闻网站内容findall函数爬取_Python爬取新闻网标题、日期、点击量
- RTMP中FLV流到标准h264、aac的转换
- 深度学习模型的前馈运算与反馈运算
- IIS下安装php5.3
- NeatUpload——支持大文件上传的控件
- c语言程序设计的反思,C语言程序设计教学反思
- 鸿蒙汽车电动尾门工厂,汽车智能电动尾门为什么能成为汽车电子行业“新宠”?...
- MicroSIP软电话安装配置说明
- 【Zigbee】进阶篇(2) Zigbee协议栈中OSAL的执行流程
- 圆圈头像制作css,通过CSS3实现圆形头像显示
- 实现antd中Form、Form.Item组件
热门文章
- proto定义嵌套列表
- 从0开始学股票进阶课之如何寻找热点板块
- 面对大事情时的表现,可看出来一个人的品质和水平
- vue-element-admin 换肤功能,登录后不同权限不同皮肤,刷新不会失效
- 32k核 oracle,Windows 操作系统(不管32bit还是64bit)是不支持oracle db的 db_32k_cache_size参数的。...
- 跨境seo引流的13种方法
- 【云原生|K8s系列第1篇】:K8s的基础概念、组件架构及实战安装
- 苹果税遭重击!法院判决:App Store必须90天内开放第三方支付,苹果市值一夜蒸发5477亿...
- Java数据结构入门以及数据结构和算法的关系
- vscode调试不出现C CPP,lauch json不自动填充cppgdb选项的替代方案