- 浏览: 46701 次
- 性别:
- 来自: 南京
文章分类
最新评论
四.menu下定义菜单
格式:<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@[+][package:]id/resource_name" android:title="string" android:titleCondensed="string" android:icon="@[package:]drawable/drawable_resource_name" android:onClick="method name" android:showAsAction=["ifRoom" | "never" | "withText" | "always" | "collapseActionView"] android:actionLayout="@[package:]layout/layout_resource_name" android:actionViewClass="class name" android:actionProviderClass="class name" android:alphabeticShortcut="string" android:numericShortcut="string" android:checkable=["true" | "false"] android:visible=["true" | "false"] android:enabled=["true" | "false"] android:menuCategory=["container" | "system" | "secondary" | "alternative"] android:orderInCategory="integer" /> <group android:id="@[+][package:]id/resource name" android:checkableBehavior=["none" | "all" | "single"] android:visible=["true" | "false"] android:enabled=["true" | "false"] android:menuCategory=["container" | "system" | "secondary" | "alternative"] android:orderInCategory="integer" > <item /> </group> <item > <menu> <item /> </menu> </item> </menu>
属性:menu:根属性,包含item和group
item:必须是menu或者group的子元素,可以包含menu(子菜单)
group:必须是menu的子元素,包含item
属性详解:
menu:xmlns:android="http://schemas.android.com/apk/res/android"
item:
<item android:id="@+id/item1" android:alphabeticShortcut="m" android:checkable=""是否能被选中 android:checked=""是否是默认选中的 android:enabled=""是否可用 android:icon=""图标 android:menuCategory="container"菜单分类 android:numericShortcut=""数字快捷键 android:orderInCategory=""在分类中顺序 android:title="root(m)"标题 android:titleCondensed="mm"简化标题 android:visible=""/>是否可见
说明:其中menuCategory分为:
container
For groups that are part of a container.
system
For groups that are provided by the system.
secondary
For groups that are user-supplied secondary (infrequently used)
options.
alternative
For groups that are alternative actions on the data that is currently
displayed.
group:android:checkableBehavior子类项的选择方式
none
Not checkable
all
All items can be checked (use checkboxes)
single
Only one item can be checked (use radio buttons
详解介绍:
1.选项菜单(option menu),当用户按下menu键或者调用openOptionsMenu()打开,第一次打开会依次回调:public boolean onCreateOptionsMenu(Menu menu)和public boolean onPrepareOptionsMenu(Menu menu
,以后每次打开只会回调: public boolean onPrepareOptionsMenu(Menu menu).返回键或者调用public void closeOptionsMenu()会关闭menu.会回调事件:public void onOptionsMenuClosed(Menu menu)
所以一般在onCreateOptionsMenu(Menu menu)中初始化:
@Override public boolean onCreateOptionsMenu(Menu menu) { super.onCreateOptionsMenu(menu); //通过MenuInflater将XML 实例化为 Menu Object MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.menu, menu); return true; }
boolean onPrepareOptionsMenu(Menu menu)
·这个方法将已经创建的 Menu 实例作为参数传递,这样的话就可以移除、添加、修改菜单项。
·Android 2.3及其之前的版本,系统在用户每次打开Options Men 时会调用onPrepareOptionsMenu()方法。
·Android 3.0及其之后的版本,当你要更新菜单时你必须调用 invalidateOptionsMenu() 方法,因为菜单
是一直打开着的,然后系统会自动调用 onPrepareOptionsMenu() 方法。
事件处理:public boolean onOptionsItemSelected(MenuItem item)
@Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.about: // 显示关于页 displayAboutBox(); return true; case R.id.help: // 显示到帮帐页 displayHelpDialog(); return true; case R.id.settings: // 跳转到配置页 displaySettings(); return true; case R.id.quit: // 退出程序 finish(); return true; default: //返回False交由系统正常处理菜单,返回True则由本程序处理 return false; } }
2.上下文菜单(content menu):长时间按住view会产生,需要在某个view上注册
说明:长时间按住就会调用oncreatecontextMenu,但是也可以调用public void openContextMenu(View view)打开,关闭时可以调用:closeContextMenu()
定义的xml格式和选项菜单是一样的,初始化调用public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo)
@Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { super.onCreateContextMenu(menu, v, menuInfo); MenuInflater inflater=getMenuInflater(); inflater.inflate(R.menu.meetings_context_menu, menu); }
事件处理:onContextItemSelected
@Override public boolean onContextItemSelected(MenuItem item) { AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo(); switch (item.getItemId()) { case R.id.delete_meeting: postionOfMeetingToDelete = info.position; showDialog(CONFIRM_DELETE_MEETING_DIALOG); return true; default: return super.onContextItemSelected(item); } }
注册菜单:registerForContextMenu和解除注册 unregisterForContextMenu
关闭时所回调的事件:onContextMenuClosed
注意:ContextMenu 与 OptionsMenu 的菜单资源XML文件格式完全相同,不能显示icon,但是ContextMenu可以具有自己的标题栏;
·通过setHeaderIcon、setHeaderTitle、setHeaderView、clearHeader方法控制标题栏的显示。
·ContextMenu 继承自 Menu ,标题栏相关的方式是扩展的方法。
多个 View 可以同时注册同一个 ContextMenu
有些 View 会自带系统的 ContextMenu,比如 EditText 会自带“输入法”“复制”“粘贴”等菜单项,
再对这些 View 注册 ContextMenu 时,会将系统菜单项和自己注册的菜单项融合到一起
3.sub menu(子菜单):在定义选项菜单和上下文菜单时可以加入子菜单,当子菜单被选中时 仍然调用和父类菜单选中时一样的方法.
可以动态的通过addsubmenu和add方法添加子菜单和子菜单项
子菜单有相应的标题栏和相应的方法
其余的特性:
菜单组:可以通过menu.setGroupCheckable();
menu.setGroupEnabled();
menu.setGroupVisible()
进行同意设置
可以通过group的android:checkableBehavior属性设置组菜单项的选择模式
single
all
none
但是选择后我们要手动的改变状态,使用方法:setChecked()
发表评论
-
android自定义控件属性详解
2012-04-01 10:56 17741. reference:参考某一资源ID。 ... -
android2.2资源文件详解8--xml文件夹下的各种文件定义
2012-02-22 19:23 632待 -
android2.2资源文件详解7--layout文件夹下布局文件定义
2012-02-22 19:21 750待 -
android2.2资源文件详解6--value文件夹下各种值定义
2012-02-22 19:21 722待.... -
android2.2资源文件详解5--drawable文件夹下各种drawable定义
2012-02-22 19:20 910待..... -
android 屏幕适配问题
2012-02-17 10:00 740android 屏幕适配问题 如何将一个应用程 ... -
android资源引用
2012-02-14 13:30 680android中的资源引用 一.R类:系统R类和自己的R类 ... -
android2.2资源文件详解5--drawable文件夹下的图像定义
2011-12-13 08:08 0五.drawable文件夹下的图形文件定义 说明:andro ... -
android2.2资源文件详解3--color文件夹下的状态颜色列表
2011-12-12 09:58 2088三.color文件夹下的状态颜色列表,随着iew的不同状态显示 ... -
android2.2资源文件详解2--tween动画
2011-12-12 09:05 1169说明:Animation是所有tween动画的父类,所以动画所 ... -
android2.2资源文件详解1--概述
2011-12-11 14:56 1010一.android开发中的资源 ...
相关推荐
AndroidSDK2.2开发环境详解
android控件详解----TextView
Google在旧金山Moscone会展中心举办Google I/O 2010大会第二天(美国时间5月20日上午)的会议之上如约正式发布了代号为“Froyo(冻酸奶)”的最新版Android 2.2操作系统。据官 方介绍,新版系统带来性能的大幅度提升,...
Android SDK2.2开发环境详解
linux常用命令详解--命令英文全称--log文件详解--重要借鉴.pdf
Android 2.2是非常值得期待,下面是根据个人实践经验配置Android SDK2.2+Eclipse 的开放环境编写的详细步骤。根据这些步骤,就是门外汉也可有完成。
这是个android资源文件帮助文档,主要是res文件夹下的包括anim,drawable,xml等
linuxchmod命令参数及用法详解--文件文件夹权限设定命令借鉴.pdf
Android核心技术与实例详解--事件处理
Google在旧金山Moscone会展中心举办Google I/O 2010大会第二天(美国时间5月20日上午)的会议之上如约正式发布了代号为“Froyo(冻酸奶)”的最新版Android 2.2操作系统。而紧接着网络中也开始提供SDK(开发者套件)安装包...
本文详细讲述了android2.2的开发环境的配置,非常适合初学者,可以很快搭好android开发环境。
Android_SDK2.2开发环境详解,最菜的菜鸟都可以很轻松的搞定
【eoeAndroid特刊】第十期 Android2.2 特色详解
[14本经典Android开发教程]-11-Android系统移植技术详解 -------------------------------------------------- (1)安装如下软件包 sudo apt-get install git-core sudo apt-get install gnupg sudo apt-get install...
android各组件详解- Menu
Struts2配置文件详解--精品版这个很好很强大
eoeAndroid特刊第十期:android2.2特色详解 pdf,主要介绍最新的android2.2系统。全面介绍android2.2中的重点升级,JIT内核编译器等方面的内容,本期亮点是推出了三份最近的android行业研究报告,技术盛宴版块里有...
android 核心分析之------Android 启动过程详解