- 浏览: 49799 次
- 性别:
- 来自: 南京
-
文章分类
最新评论
四.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 18511. reference:参考某一资源ID。 ... -
android2.2资源文件详解8--xml文件夹下的各种文件定义
2012-02-22 19:23 696待 -
android2.2资源文件详解7--layout文件夹下布局文件定义
2012-02-22 19:21 832待 -
android2.2资源文件详解6--value文件夹下各种值定义
2012-02-22 19:21 770待.... -
android2.2资源文件详解5--drawable文件夹下各种drawable定义
2012-02-22 19:20 952待..... -
android 屏幕适配问题
2012-02-17 10:00 791android 屏幕适配问题 如何将一个应用程 ... -
android资源引用
2012-02-14 13:30 728android中的资源引用 一.R类:系统R类和自己的R类 ... -
android2.2资源文件详解5--drawable文件夹下的图像定义
2011-12-13 08:08 0五.drawable文件夹下的图形文件定义 说明:andro ... -
android2.2资源文件详解3--color文件夹下的状态颜色列表
2011-12-12 09:58 2144三.color文件夹下的状态颜色列表,随着iew的不同状态显示 ... -
android2.2资源文件详解2--tween动画
2011-12-12 09:05 1217说明:Animation是所有tween动画的父类,所以动画所 ... -
android2.2资源文件详解1--概述
2011-12-11 14:56 1094一.android开发中的资源 ...
相关推荐
所有的资源文件都放在`res`目录下,不同类别的资源需要放置在不同的特定名称的子文件夹中,或者是写在特定文件名的文件中。 ##### 1.3 创建资源文件 资源文件可以在项目`res/`目录下的适当子目录中创建和存储。...
2.2 HelloAndroid详解 2.2.1 程序结构 2.2.2 代码分析 2.3 权限permission 2.4 LogCat日志调试 2.5 示例练习 2.5.1 登录界面 2.5.2 事件处理 2.6 本章小结 第二篇 Android开发关键组件 第3章 Activity(活动) 3.1 ...
6.7 使用菜单(Menu)资源 239 6.7.1 定义菜单资源 239 6.7.2 使用菜单资源 240 6.8 样式(Style)和主题(Theme) 资源 243 6.8.1 样式资源 243 6.8.2 主题资源 245 6.9 属性(Attribute)资源 247...
- **菜单栏(Menu Bar)**:包含文件(File)、编辑(Edit)、资产(Assets)等常用选项。 - **检视面板(Inspector Panel)**:用于查看和编辑对象属性。 - **层级视图(Hierarchy View)**:展示当前场景中的所有对象层次结构...