A0243使用OptionsMenuSubMenu
Authorware下拉菜单与多级菜单的制作

Authorware下拉菜单与多级菜单的制作Authorware制作下拉菜单需要用到交互图标所提供的下拉菜单首先是擦除原有菜单的“文件”二字在用Authorware的菜单交互制作菜单时,Authorware总会在菜单栏上加一个“文件”菜单。
这个“文件”菜单与我们的作品总是那么不协调。
所以咱们先想办法去掉这个“文件”菜单。
具体步骤如下:1、在主流程线上拖一个交互图标,命名为“文件”。
在其右侧放一个组图标(内容为空),在弹出的对话框中,选择“下拉菜单”。
双击组图标上方的小方块,弹出属性对话框,选择“永久”及“退出交互”,其他选项就用默认的设置。
2、在交互图标的下方,放一个擦除图标,然后运行一下演示窗口,用鼠标单击演示窗口标题栏上的“文件”二字。
仔细看,那个“文件”菜单会随之消失。
运行一下看看是不是消除了。
下拉菜单制作首先在流程线上拖入一交互图标,命名为“文件”,在其右侧放一个组图标,在弹出的对话框中,选择“下拉菜单”。
将这个组图标命名为“新建”,范围选择“永久”。
然后在其右侧继续放入五个这样的组图标,分别命名为:“打开”、“- ”(这个减号表示分界线)、“保存”、“另存为”、“- ”。
最后再放上一个计算图标,命名为“退出”,打开它,输入" quit(0) " ,这样一个下拉菜单就做好了,运行下便能看到效果。
多级菜单制作1、在流程线上放一个交互图标,命名为“图片欣赏”,在其右侧放一个组图标,选择交互类型“下拉菜单”。
将这个组图标命名为“植物图片”。
双击组图标上方的那个矩形色块,在弹出的属性对话框中,点击“响应”选项卡,选中其中的“永久”复选项,并将“分支”的值选为“返回”。
您可以继续添加几个这样的组图标,分别命名为“动物图片”、“风景图片”等等,当然随便您啦。
2、按同样的方法,在主流程线上再放一个交互图标,其右侧也放几个组图标,分别命名为“梅花”、“兰花”、“菊花”等。
各项设置同上面的步骤一样。
VS2010之MFC入门到精通教程(1-55全部)

VS2010/MFC编程入门教程之目录第一部分:VS2010/MFC开发环境VS2010/MFC编程入门之前言VS2010/MFC编程入门之一(VS2010与MSDN安装过程图解)第二部分:VS2010-MFC应用程序框架VS2010/MFC编程入门之二(利用MFC向导生成单文档应用程序框架)VS2010/MFC编程入门之三(VS2010应用程序工程中文件的组成结构)VS2010/MFC编程入门之四(MFC应用程序框架分析)VS2010/MFC编程入门之五(MFC消息映射机制概述)第三部分:对话框VS2010/MFC编程入门之六(对话框:创建对话框模板和修改对话框属性)VS2010/MFC编程入门之七(对话框:为对话框添加控件)VS2010/MFC编程入门之八(对话框:创建对话框类和添加控件变量)VS2010/MFC编程入门之九(对话框:为控件添加消息处理函数)VS2010/MFC编程入门之十(对话框:设置对话框控件的Tab顺序)VS2010/MFC编程入门之十一(对话框:模态对话框及其弹出过程)VS2010/MFC编程入门之十二(对话框:非模态对话框的创建及显示)VS2010/MFC编程入门之十三(对话框:属性页对话框及相关类的介绍)VS2010/MFC编程入门之十四(对话框:向导对话框的创建及显示)VS2010/MFC编程入门之十五(对话框:一般属性页对话框的创建及显示)VS2010/MFC编程入门之十六(对话框:消息对话框)VS2010/MFC编程入门之十七(对话框:文件对话框)VS2010/MFC编程入门之十八(对话框:字体对话框)VS2010/MFC编程入门之十九(对话框:颜色对话框)第四部分:常用控件VS2010/MFC编程入门之二十(常用控件:静态文本框)VS2010/MFC编程入门之二十一(常用控件:编辑框Edit Control)VS2010/MFC编程入门之二十二(常用控件:按钮控件Button、Radio Button和Check Box)VS2010/MFC编程入门之二十三(常用控件:按钮控件的编程实例)VS2010/MFC编程入门之二十四(常用控件:列表框控件ListBox)VS2010/MFC编程入门之二十五(常用控件:组合框控件Combo Box)VS2010/MFC编程入门之二十六(常用控件:滚动条控件Scroll Bar)VS2010/MFC编程入门之二十七(常用控件:图片控件Picture Control)VS2010/MFC编程入门之二十八(常用控件:列表视图控件List Control 上)VS2010/MFC编程入门之二十九(常用控件:列表视图控件List Control 下)VS2010/MFC编程入门之三十(常用控件:树形控件Tree Control 上)VS2010/MFC编程入门之三十一(常用控件:树形控件Tree Control 下)VS2010/MFC编程入门之三十二(常用控件:标签控件Tab Control 上)VS2010/MFC编程入门之三十三(常用控件:标签控件Tab Control 下)第五部分:菜单、工具栏与状态栏VS2010/MFC编程入门之三十四(菜单:VS2010菜单资源详解)VS2010/MFC编程入门之三十五(菜单:菜单及CMenu类的使用)VS2010/MFC编程入门之三十六(工具栏:工具栏资源及CToolBar类)VS2010/MFC编程入门之三十七(工具栏:工具栏的创建、停靠与使用)VS2010/MFC编程入门之三十八(状态栏的使用详解)第六部分:文档、视图和框架VS2010/MFC编程入门之三十九(文档、视图和框架:概述)VS2010/MFC编程入门之四十(文档、视图和框架:各对象之间的关系)VS2010/MFC编程入门之四十一(文档、视图和框架:分割窗口)第七部分:MFC常用类VS2010/MFC编程入门之四十二(MFC常用类:CString类)VS2010/MFC编程入门之四十三(MFC常用类:CTime类和CTimeSpan类)VS2010/MFC编程入门之四十四(MFC常用类:定时器Timer)VS2010/MFC编程入门之四十五(MFC常用类:CFile文件操作类)VS2010/MFC编程入门之四十六(MFC常用类:MFC异常处理)第八部分:字体和文本输出VS2010/MFC编程入门之四十七(字体和文本输出:CFont字体类)VS2010/MFC编程入门之四十八(字体和文本输出:文本输出)第九部分:图形图像VS2010/MFC编程入门之四十九(图形图像:CDC类及其屏幕绘图函数)VS2010/MFC编程入门之五十(图形图像:GDI对象之画笔CPen)VS2010/MFC编程入门之五十一(图形图像:GDI对象之画刷CBrush)第十部分:Ribbon界面开发VS2010/MFC编程入门之五十二(Ribbon界面开发:创建Ribbon样式的应用程序框架)VS2010/MFC编程入门之五十三(Ribbon界面开发:为Ribbon Bar添加控件)VS2010/MFC编程入门之五十四(Ribbon界面开发:使用更多控件并为控件添加消息处理函数)VS2010/MFC编程入门之前言鸡啄米的C++编程入门系列给大家讲了C++的编程入门知识,大家对C++语言在语法和设计思想上应该有了一定的了解了。
VB常用代码

VB常用代码Private Declare Function fCreateShellLink Lib "" (ByVal lpstrFolderName As String, ByVal lpstrLinkName As String, ByVal lpstrLinkPath As String, ByVal lpstrLinkArgs As String) As LongSub Command1_Click()Dim lReturn As Long'添加到桌面lReturn = fCreateShellLink("..\..\Desktop", "Shortcut to Calculator", "c:\windows\", "")'添加到程序组lReturn = fCreateShellLink("", "Shortcut to Calculator", "c:\windows\", "")'添加到启动组lReturn = fCreateShellLink("\Startup", "Shortcut to Calculator", "c:\windows\", "")End Sub问题二、如何让程序在Windows 启动时自动执行?有以下二个方法:方法1: 直接将快捷方式放到启动群组中。
方法2:在注册档HKEY_LOCAL_MACHINE 中找到以下机码\Software\Microsoft\Windows\CurrentVersion\Run新增一个字串值,包括二个部份1. 名称部份:自己取名,可设定为AP 名称。
C# TreeView菜单,MenuStrip菜单递归动态生成例子

这是在权限系统中设计中常用到的两种菜单处理方式private DataTable ModuleTable;private void FrmMain_Load(object sender, EventArgs e){try{InitMenu();}catch{MenuTree.Nodes.Clear();}}///<summary>///初始化菜单///</summary>protected void InitMenu(){DataSet ds= new DataSet();ds=bll.GetModuleTypeList("");RGP.BLL.RGP_Modules bll = new RGP.BLL.RGP_Modules(); ModuleTable = ds.Tables[0]; //取得所有数据得到DataTable//加载TreeView菜单LoadNode(MenuTree.Nodes, "0");//加载MenuStrip菜单ToolStripMenuItem topMenu = new ToolStripMenuItem();LoadSubMenu(ref topMenu, 0);}///<summary>///递归创建TreeView菜单(模块列表)///</summary>///<param name="node">子菜单</param>///<param name="MtID">子菜单上级ID</param>protected void LoadNode(TreeNodeCollection node, string MtID){DataView dvList = new DataView(ModuleTable);dvList.RowFilter = "ModuleTypeSuperiorID=" + MtID; //过滤父节点TreeNode nodeTemp;foreach (DataRowView dv in dvList){nodeTemp = new TreeNode();nodeTemp.Tag = dv["ModuleTypeID"].ToString() + ",0";nodeTemp.Text = dv["ModuleTypeName"].ToString(); //节点名称node.Add(nodeTemp); //加入节点//nodeTemp.SelectAction = TreeNodeSelectAction.Expand;//nodeTemp.Expanded = false;this.LoadNode(nodeTemp.Nodes, nodeTemp.Tag.ToString().Split(',')[0]); //递归//增加子模块分类RGP.BLL.RGP_Modules bll = new RGP.BLL.RGP_Modules();DataSet Module = bll.GetModuleList("ModuleTypeID=" + dv["ModuleTypeID"].ToString());int i = 0;foreach (DataRow child_dr in Module.Tables[0].Rows){if ((UserBox.GetUserTable().IsLimit == true|| (child_dr["ModuleDisabled"].ToString().ToLower() == "true"&& UserHandle.ValidationModule(int.Parse(child_dr["ModuleID"].ToString()), RGP_Ta g.Browse)))&& child_dr["IsMenu"].ToString().ToLower() == "true"){TreeNode ChildNode = new TreeNode(child_dr["ModuleName"].ToString());ChildNode.Tag = child_dr["ModuleID"].ToString() + ",1";ChildNode.Expand();nodeTemp.Nodes.Add(ChildNode);i++;}}//删除不必要的模块分类节点。
制作Authorware多级子选单详解

制作Authorware多级子选单详解制作Authorware多级子选单详解在Authorware中利用选单交互很容易制作一个标准的Windows风格的选单,而用Authorware来制作子选单却是一件相当麻烦的事;但是如果使用Control u32 for Authorware这个UCD,.上面这个问题将比较容易解决。
这个UCD的文件名为tMsControls.u32(tMsControls.u32是Mediashoppe提供的一个免费的函数库,其功能非常强大),它可以允许用户使用如下一些通用Windows控制:●下拉列表●弹出式快捷选单●选择文件对话框●字体下拉列表●带预览功能的图形文件打开对话框●带预览功能的图形文件保存对话框下面利用tMsControls.u32来制作子选单,主要是利用tMsControls.u32中的tMsCreatePopupList、tMsDisplayControl、tMsAddItem这三个函数实现子选单的功能。
其实现过程如下。
●取得Windows句柄:popupHandle:=tMsCreatePopupList(WindowHandle)。
●设置选单内容:Result:=tMsAddItem(ControlHandle,menuItemNo,submenuIt emNo, menuText),其中参数ControlHandle是控制句柄的变量名,这里是popupHandle;参数menuItemNo是选单内容中的排列顺序;参数submenuItemNo的作用是设置子选单,如0 表示是一级选单,1、2、3...... 表示二级选单;参数MenuText是设置选单显示内容,其中分隔线用- 。
●设置选单显示位置:Result:=tMsDisplayControl(ControlHandle, X, Y, Width, Height, Return),其中参数ControlHandle是控制句柄的变量名;参数X、Y分别表示水平和垂直位置;参数Windth、Height分别表示选单的宽和高;Return表示返回值。
aml教程

实习七、二次开发技术AML(Arc Macro Language),是用户在NT Arc/Info 中的ARC环境下用于二次开发的宏语言。
它主要包括设置用户环境、输入源指令、指令流控制、变量操作指令、程序实验和监视指令、对话环境指令、坐标输入指令、数学和三角函数、字符串操作功能、用户文件输入输出功能、文件管理功能、用户输入功能等。
通过ARC系统,AML能用于执行各种任务,例如:自动执行一系列动作类似于批处理、生成用户自己的命令集、编制菜单以及用户界面设计。
一、AML语言中的几个基本知识1、基本概念①.操作符:算术运算符:加,减,乘,除,乘方(+ - * /**)在AML语言中操作符的组合表达式运算规则为从左到右执行,有括号先括号,多层(最多四层)括号先里后外。
各种运算符的优先级是先函数、再括号、再乘方、再乘除最后加减,表达式书写时操作符,括号的两边必须有空格。
例如:2+3*5+(4-1)的书写格式和运算步骤如下:2 +3 * 5 +(4 - 1 )= 2 + 3 *5 + 3 = 2 + 15 + 3 = 20②.变量名:AML语言中,变量名由字符或数字组成,字符不区分大小写。
在变量名前加'.'表示为全局变量。
变量在使用过程中为区别于字符串,变量用%%括起来。
(如 %.path%)在部分函数、命令中规定使用变量参数时,引用的变量不能用%%括起来。
(如 &sv .path c:\arcinfo)变量在被定义或赋值后,可保存其值,直到被重新定义或赋值。
变量不需要先声明,在使用时即可作为字符型,也可作为数值型等。
③.函数AML语言中,有多种功能的函数,常用于数学计算、字符串操作、文件操作、用户输入等功能。
在使用中函数名用[]括起来,并且需要对函数的返回值做操作。
(如 &type [getcover *] ; edit [getcover *] ;&sv cover_name [getcover *])④.命令AML语言的大多数命令可在各模块中使用。
parameters分派方法不支持超过64个参数

Dispatch methods do not support more than 64 parameters 分派方法不支持超过64 个参数No help found for %s 找不到%s 的帮助No context-sensitive help installed 未安装上下文关联的帮助No topic-based help system installed 未安装基于主题的帮助系统Failed to clear tab control 清除制表符控制失败Failed to delete tab at index %d 在索引%d 中删除制表符失败Failed to retrieve tab at index %d 在索引%d 中获取制表符失败Failed to get object at index %d 在索引%d 中获取对象失败Failed to set tab "%s" at index %d 在索引%d 中设置制表符“%s”失败Failed to set object at index %d 在索引%d 中设置对象失败MultiLine must be True when TabPosition is tpLeft or tpRight 当TabPosition 是tpLeft 或tpRight 时多行必须是Ture Invalid owner 无效的所有者%d is an invalid PageIndex value. PageIndex must be between 0 and %d %d 是一个无效的PageIndex 值,PageIndex 必须介于0 到%d 之间This control requires version 4.70 or greater of COMCTL32.DLL 此控件需要COMCTL32.DLL 的4.70 或更高版本OLE error %.8x OLE 错误%.8xMethod '%s' not supported by automation object 方法“%s”不被自动对象支持Variant does not reference an automation object 变量不引用自动对象Value must be between %d and %d 值必须在%d 和%d 之间Unable to insert a line 不能插入行Clipboard does not support Icons 剪贴板不支持图标Text exceeds memo capacity 文本超过备忘录容量Menu '%s' is already being used by another form 菜单“%s”已经被其他窗体使用Docked control must have a name 被停放的控件必须有名称Error removing control from dock tree 从停放树中移除控件出现错误- Dock zone not found - 停放区没有找到- Dock zone has no control - 停放区无控件Unable to find a Table Of Contents 找不到目录列表Cannot drag a form 不能拖动窗体Menu inserted twice 菜单被插入两次Sub-menu is not in menu 子菜单不在菜单里Not enough timers available 没有足够的计时器可用GroupIndex cannot be less than a previous menu item's GroupIndex GroupIndex 不能少于上级菜单项目的GroupIndex Cannot create form. No MDI forms are currently active 不能创建窗体,当前没有MDI 窗体被激活A control cannot have itself as its parent 控件不能把自己当作父类Canvas does not allow drawing 画布不允许绘制Invalid image size 无效的图像大小Invalid ImageList 无效的ImageListUnable to Replace Image 不能替换图像Invalid ImageList Index 无效的ImageList 索引Failed to read ImageList data from stream 从流中读ImageList 数据失败Failed to write ImageList data to stream写ImageList 数据到流失败Error creating window device context 创建窗口设备关联时出错Error creating window class 创建窗口类时出错Cannot focus a disabled or invisible window 不能聚焦于一个禁用或不可见的窗口Control '%s' has no parent window “%s”控件没有父窗口Cannot hide an MDI Child Form 不能隐藏MDI 子窗体Cannot change Visible in OnShow or OnHide 不能在OnShow 或OnHide 里改变VisibleCannot make a visible window modal 不能产生可见窗口模式%s property out of range %s 属性超出范围Menu index out of range 菜单索引超出范围Resource %s not found 资源%s 没被找到%s.Seek not implemented %s.查找未被执行Operation not allowed on sorted list 在被排序的列表上操作不被允许%s not in a class registration group %s 不在类注册组中Property %s does not exist 参数%s 不存在Stream write error 流写入错误Thread creation error: %s 线程创建错误: %sThread Error: %s (%d) 线程错误: %s (%d)Tab position incompatible with current tab style 制表符位置同当前的制表符样式不相容Tab style incompatible with current tab position 制表符样式同当前的制表符位置不相容Bitmap image is not valid 位图图像无效Icon image is not valid 图标图像无效Metafile is not valid 图元文件无效Cannot change the size of an icon 不能改变图标的大小Unsupported clipboard format 不被支持的剪贴板格式Out of system resources 系统资源超出范围Cannot open file %s 无法打开文件%sInvalid stream format 无效的流格式''%s'' is not a valid component name “%s”不是有效的组件名Invalid property value 无效的属性值Invalid property path 无效的属性路径Invalid data type for '%s' 对于“%s”,数据类型无效List capacity out of bounds (%d) 列表容量超出范围(%d)List count out of bounds (%d) 列表计数超出范围(%d)List index out of bounds (%d) 列表索引超出范围(%d)Out of memory while expanding memory stream 扩展内存流时内存溢出Error reading %s%s%s: %s 读取%s%s%s 时出错: %sStream read error 流读取错误Property is read-only 属性为只读Failed to get data for '%s' 获取“%s”的数据失败Failed to set data for '%s' 设置“%s”的数据失败Wednesday 星期三Thursday 星期四Friday 星期五Saturday 星期六Unable to create directory 不能创建目录Ancestor for '%s' not found 找不到“%s”的上级Cannot assign a %s to a %s 不能指派%s 到%sBits index out of range 位索引超出范围Can't write to a read-only resource stream 不能写入到只读资源流CheckSynchronize called from thread $%x, which is NOT the main thread CheckSynchronize 调用非主线程$%x Class %s not found 类%s 没被找到A class named %s already exists 名为%s 的类已经存在List does not allow duplicates ($0%x) 列表不允许重复($0%x)A component named %s already exists 名为%s 的组件已经存在String list does not allow duplicates 字符串列表不允许重复Cannot create file %s 无法创建文件%sJuly 七月August 八月September 九月October 十月November 十一月December 十二月Sun 星期日Mon 星期一Tue 星期二Wed 星期三Thu 星期四Fri 星期五Sat 星期六Sunday 星期日Monday 星期一Tuesday 星期二Mar 三月Apr 四月May 五月Jun 六月Jul 七月Aug 八月Sep 九月Oct 十月Nov 十一月Dec 十二月January 一月February 二月March 三月April 四月June 六月Read 读Write 写Error creating variant array 创建变体型数组时出错Variant is not an array 变体类型并非一个数组Variant array index out of bounds 变体型数组索引超出范围External exception %x 外部异常%xAssertion failed 声明失败Interface not supported 界面不被支持Exception in safecall method 安全调用模式里的异常%s (%s, line %d) %s (%s,行%d)Abstract Error 摘要错误Access violation at address %p in module '%s'. %s of address %p 访问违规于模块“%s”里的地址%p,地址%p 处的%sSystem Error. Code: %d.\r\n%s 系统错误,代码:\r\n%sA call to an OS function failed 到OS 函数的调用失败Jan 一月Feb 二月Floating point division by zero 浮点除以零Floating point overflow 浮点溢出Floating point underflow浮点下溢Invalid pointer operation 无效的指针操作Invalid class typecast 无效的类角色类型Access violation at address %p. %s of address %p 访问违规于地址%p,地址%p 的%s 处Stack overflow 堆栈溢出Control-C hit 按Ctrl-CPrivileged instruction 特许指令Exception %s in module %s at %p.\n%s%s 异常%s 出现于%p 的模块%s。
使用AUTHORWARE如何制作弹出式菜单

1.从tMsControls.U32中载入本实例必需的函数:tMsAddItem、tMsCreatePopupList、tMsDestroyControl、tMsDisplayControl。
2.拖一个计算图标到流程线上,命名为“创建弹出式菜单”;在其中输入如下脚本(----后边是有关程序脚本的说明):
----下列代码创建弹出式菜单的菜单选项列表:tMsAddItem(popupHandle,1,0,选项1)tMsAddItem(popupHandle,2,0,选项2)tMsAddItem(popupHandle,3,0,-)
----在选项2和选项3之间创建一条分隔线tMsAddItem(popupHandle,4,0,选项3)tMsAddItem(popupHandle,5,0,选项4)tMsAddItem(popupHandle,6,0,选项5)
----下列代码为选项2菜单项创建两个分隔开的子菜单选项,如不需要子菜单,可以省略:tMsAddItem(popupHandle,2,1,子选项1)tMsAddItem(popupHandle,2,2,-)tMsAddItem(popupHandle,2,3,子选项2)
----下列代码在右键敲击处,弹出一个前边设定好的弹出式菜单,并将用户反馈(即用户所选择的菜单项)返回给变量result:result:=tMsDisplayControl(popupHandle,CursorX,CursorY,100,150,1)
----当不需要再使用该弹出式菜单时,可用下列代码将它删掉。
tMsDestroyControl(popupHandle)
你只需对本实例稍加修改,就可以用到你自己的程序中去了。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
OptionsMenuSubMenu
知识解析
一个子菜单可以被加入任何菜单中,但不能加入另外的子菜单中。
当应用程序有很多功能可以被分类时,采用子菜单可以非常方便,就像是一般计算机的菜单。
子菜单的定义同样可以通过xml资源文件或者Java程序来定义。
下面是使用xml文件来定义的一个例子:
<menu xmlns:android="/apk/res/android"
xmlns:tools="/tools"
tools:context="com.exam.a0242optionsmenusubmenu.MainActivity" >
<item
android:id="@+id/action_settings"
android:orderInCategory="100"
android:showAsAction="never"
android:title="@string/action_settings"/>
<item
android:id="@+id/action_file"
android:title="@string/string_file">
<menu>
<item
android:id="@+id/file_open"
android:title="@string/string_file_open"/>
<item
android:id="@+id/file_save"
android:title="@string/string_file_save"/>
<item
android:id="@+id/file_close"
android:title="@string/string_file_close"/>
</menu>
</item>
<item
android:id="@+id/action_gender"
android:title="@string/string_gender">
<menu>
<group
android:id="@+id/group_gender"
android:checkableBehavior="single">
<item
android:id="@+id/item1"
android:title="@string/string_gender_female"
android:checked="true"/>
<item
android:id="@+id/item2"
android:title="@string/string_gender_male"/>
</group>
</menu>
</item>
</menu>
上面的代码中,通过在<item>中加入子元素menu来加入子菜单。
如果要让几个紫菜单项成为一组,则可以使用<group>将它们放在同一个组中,并且指定checkableBehavior属性为single(单选)或者multiple(多选)。
功能演示
实战操作
<menu xmlns:android="/apk/res/android"
xmlns:tools="/tools"
tools:context="com.exam.a0242optionsmenusubmenu.MainActivity" >
<item
android:id="@+id/action_settings"
android:orderInCategory="100"
android:showAsAction="never"
android:title="@string/action_settings"/>
<item
android:id="@+id/action_file"
android:title="@string/string_file">
<menu>
<item
android:id="@+id/file_open"
android:title="@string/string_file_open"/>
<item
android:id="@+id/file_save"
android:title="@string/string_file_save"/>
<item
android:id="@+id/file_close"
android:title="@string/string_file_close"/>
</menu>
</item>
<item
android:id="@+id/action_gender"
android:title="@string/string_gender">
<menu>
<group
android:id="@+id/group_gender"
android:checkableBehavior="single" >
<item
android:id="@+id/item1"
android:checked="true"
android:title="@string/string_gender_female"/> <item
android:id="@+id/item2"
android:title="@string/string_gender_male"/> </group>
</menu>
</item>
</menu>
职业素质
Android一共有三种形式的菜单:
1.选项菜单(optinosMenu)
2.上下文菜单(ContextMenu)
3.子菜单(subMenu)
其中最常用的就是选项菜单(optionsMenu), 该菜单在点击 menu 按键后会在对应的Activity底部显示出来。