Android学习之菜单
android中包含多种菜单,本例带来的是选项菜单和上下文菜单。
1.选项菜单
在android中,开发者可以在xml文档中部署所要添加的菜单,在后台调用即可。
- <menu xmlns:android="http://schemas.android.com/apk/res/android" >
- <item
- android:id="@+id/action_add"
- android:title="添加"
- android:showAsAction="always|withText"/>
- <item
- android:id="@+id/action_save"
- android:title="保存"
- android:showAsAction="ifRoom"/>
- <item
- android:id="@+id/action_discard"
- android:title="删除"
- android:showAsAction="ifRoom"/>
- <item
- android:id="@+id/action_delete"
- android:title="删除"
- android:showAsAction="ifRoom"/>
- <item
- android:id="@+id/action_undo"
- android:title="撤销"
- android:showAsAction="ifRoom"/>
- </menu>
menu.xml
在xml中我们定义了几个常用的菜单,添加、删除、保存等。在xml中定义菜单式通过在<menu/>中定义的。<item/>即为菜单项。android最多可以有六个菜单,超出之后android系统会自动将超出的菜单放在更多的菜单项。
- public boolean onCreateOptionsMenu(Menu menu) {
- Inflate the menu; this adds items to the action bar if it is present.
- MenuInflater inflater = getMenuInflater();
- inflater.inflate(R.menu.main, menu);
- mOptionsMenu = menu;
- return super.onCreateOptionsMenu(menu);
- }
菜单显示
重写onCreateOptionsMenu方法,这里调用已经定义好的menu.xml,可以显示我们刚刚定义的菜单项。
在开发中,菜单也是与事件分不开的。通过onoptionsitemclick,来监听菜单的选中事件。
- public boolean onOptionsItemSelected(MenuItem menu)
- {
- switch(menu.getItemId())
- {
- case R.id.action_add:
- Toast.makeText(this, "您点击了添加", Toast.LENGTH_LONG).show();
- return true;
- case R.id.action_delete:
- Toast.makeText(this, "您点击了删除", Toast.LENGTH_LONG).show();
- return true;
- case R.id.action_save:
- Toast.makeText(this, "您点击了保存", Toast.LENGTH_LONG).show();
- return true;
- case R.id.action_undo:
- Toast.makeText(this, "你点击了撤销", Toast.LENGTH_LONG).show();
- return true;
- default:
- return super.onOptionsItemSelected(menu);
- }
- }
菜单事件
当然,开发人员也可以动态的添加菜单,不需要在xml中预先写好每一个菜单项。
mOptionsMenu.add(1, 1, 1, "添加");第一个参数:菜单项的分组id;第二个参数:菜单项的id;第三个参数:菜单显示顺序的id,android会根据id进行从左到右,从上到下的排序;第四个参数:菜单项的标题
2.子菜单和上下文菜单
在android中,子菜单和菜单是同一级的,可以通过submenu.add添加子菜单。添加一个带复选框的子菜单
- public boolean onCreateOptionsMenu(Menu menu) {
- // Inflate the menu; this adds items to the action bar if it is present.
- // MenuInflater inflater = getMenuInflater();
- //inflater.inflate(R.menu.main, menu);
- // mOptionsMenu = menu;
- SubMenu filesubmenu=menu.addSubMenu(1,1,2,"文件");
- MenuItem newMenu=filesubmenu.add(1,2,2,"新建");
- newMenu.setCheckable(true);
- MenuItem openMenu=filesubmenu.add(2,3,3,"打开");
- filesubmenu.setGroupCheckable(2, true, true);
- return super.onCreateOptionsMenu(menu);
- }
子菜单
上下文菜单可以和任意的view关联,而且它必须关联一个view,例如button、textview等。
- public void onCreateContextMenu(ContextMenu menu,View view,ContextMenuInfo menuInof)
- {
- super.onCreateContextMenu(menu, view, menuInof);
- menu.add("上下文菜单");
- menu.add(0,ITEM1,Menu.NONE,"放大").setCheckable(true).setChecked(true);
- menu.add(20,ITEM2,Menu.NONE,"缩小");
- menu.add(20,ITEM3,Menu.NONE,"平移");
- menu.setGroupCheckable(20, true, true);
- SubMenu sub=menu.addSubMenu(0,4,Menu.NONE,"子菜单");
- sub.add("子菜单1");
- sub.add("子菜单2");
- }
上下文菜单
上下文菜单中可以添加子菜单的。上下文菜单在添加中,需要注册。
Button button9=(Button)findViewById(R.id.button9);
registerForContextMenu(button9);
这里将定义的上下文菜单注册到button9中。
如果想实现对上下文菜单选择时间的监听,oncontextitemselected方法实现。
- public boolean onContextItemSelected(MenuItem item){
- switch(item.getItemId()){
- case ITEM1:
- //在这里添加处理代码
- Toast.makeText(this, "点击了放大", 5000).show();
- return true;
- case ITEM2:
- //在这里添加处理代码
- Toast.makeText(this, "点击了缩小", 5000).show();
- break;
- case ITEM3:
- //在这里添加处理代码
- break;
- }
- return true;
- }
上下文菜单事件
Android学习之菜单的更多相关文章
- Android学习笔记菜单资源文件
创建菜单资源 menu_one.xml <?xml version="1.0" encoding="utf-8"?> <menu xmlns: ...
- android学习七 菜单
1.菜单分类 常规菜单 子菜单 上下文菜单 图标菜单 辅助菜单 交替菜单 2.菜单类 andriod.view.menu 3.菜单的参数 名称:字符串标题 菜单ID:整数 ...
- Android学习笔记之横向二级菜单实现
PS:元旦来一发. 学习内容: 1.Android二级横向菜单的实现过程.效果如上图... 这种横向的二级菜单在很多的app都有所应用.效果看起来还是非常的美观的.也算是项目需要,自己也就学了一下 ...
- Android学习笔记之如何使用圆形菜单实现旋转效果...
PS:最近忙于项目的开发,一直都没有去写博客,是时候整理整理自己在其中学到的东西了... 学习内容: 1.使用圆形菜单并实现旋转效果.. Android的圆形菜单我也是最近才接触到,由于在界面 ...
- Android学习笔记之树形菜单的应用...
PS:终于考完试了,总算是解脱了...可以正式上手项目开发了.... 学习内容: 1.掌握如何使用树形菜单... 对知识点进行一下补充...居然忘记了去学习树形菜单...不过在这里补上... Ex ...
- Android:有关菜单的学习(供自己参考)
Android:有关==菜单==的学习 上下文菜单 上下文菜单就是手机中对某一项进行==点击一定时间==后弹出的针对该项处理的菜单. context_menu.xml: <?xml versio ...
- 【转】 Pro Android学习笔记(三四):Menu(5):动态菜单
目录(?)[-] OptionsMenu的创建方式 如何再次创建OptionsMenu 每次访问都重新填充菜单项 OptionsMenu的创建方式 OptionMenu在第一次访问该菜单时调用,只调用 ...
- 【转】 Pro Android学习笔记(三五):Menu(6):XML方式 & PopUp菜单
目录(?)[-] 利用XML创建菜单 XML的有关属性 onClick事件 Pop-up菜单 利用XML创建菜单 在代码中对每个菜单项进行设置,繁琐且修改不灵活,不能适配多国语言的要求,可以利用资源进 ...
- 【转】 Pro Android学习笔记(三二):Menu(3):Context菜单
目录(?)[-] 什么是Context menu 注册View带有Context menu 填Context菜单内容 Context菜单点击触发 什么是Context menu 在桌面电脑,我们都很熟 ...
随机推荐
- 如何统一删除word中的超链接
[摘要] 我们从别处拷贝文字,或从网上复制的文字,里面有很多超级链接,如何可以批量删除这些链接呢?这里介绍两种批量删除链接的方法. [正文] 方法一:使用快捷键删除超链接 有个神奇的快捷键,可以帮我们 ...
- Ubuntu 系统搭建php服务器 用ssh 远程操作
一:在桌面下载xshell客户端连接 ,vmavar 上的 Ubuntu系统,遇到的问题跟大家分享一下,希望大家少走弯路 Ubuntu系统默认没有ssh server 要安装 apt-get inst ...
- zabbix安装及配置(rpm包安装mysql,php,apache,zabbix)
zabbix安装及配置 一.安装mysql.php.apache.zabbix 安装环境: 操作系统:rhel6.3-x86-64 mysql:5.6.23 --官网下载rpm包安装php:5. ...
- Android服务端本地窗口FramebufferNativeWindow
Android窗口系统 我们知道Android系统采用OpenGL来绘制3D图形,OpenGL ES提供了本地窗口(NativeWindow)的概念,无论是在Android平台中还是其他平台中,只要实 ...
- PES包头
PES是打包过的ES,已经插入PTS和DTS,一般是一个pes包为一帧图像 PES包格式: PES再打包成TS流或PS流,往往一个PES会分存到多个ts包中, start_code: 0x00 00 ...
- js 创建html元素 渲染html元素
var p1 = document.getElementById('p1'); //添加的元素类型及属性var newNode = document.createElement("input ...
- JQ 动态添加节点
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- AngularJs中关于ng-class的三种使用方式说明
在开发中我们通常会遇到一种需求:一个元素在不同的状态需要展现不同的样子. 而在这所谓的样子当然就是改变其css的属性,而实现能动态的改变其属性值,必然只能是更换其class属性 这里有三种方法: 第一 ...
- python 调用shell或windows命令
目前使用到的有两种方式:os.system()和os.popen() import os os.system('cd e:cjx') #调用后返回执行结果状态 如果想获得返回结果,则使用以下方式: i ...
- nginx---Beginner's Guide
一 启动 nginx -s signal Where signal may be one of the following: stop — fast shutdown quit — graceful ...