菜单Menu
Android手机用一个按键“Menu”专门来显示菜单,所以,当应用程序设置了菜单,我们可以通过该按键来操作应用程序的菜单选项。
有两种不同的实现方式:
访问res中menu菜单资源
/res/menu/ 存放为应用程序定义各种菜单的资源,包括选项菜单、子菜单、上下文菜单资源
Android推荐使用XML来定义菜单,使用XML“定义菜单将会提供更好的解耦。
一、android中Menu菜单是隐藏的
在activity主界面按手机Menu键最多只能显示6个菜单项,设置6个以上,弹出的带图标选项的菜单选项只能显示当前5个菜单项,第六个菜单项也是more菜单项(单击会浮现出一个主界面之上的一个扩展项,不显示图标,可以显示单选框和复选框)
二、三种菜单类型:
1,options menu(主菜单),通过按home键来显示特点:只支持文字和图标expanded menu,不支持icon2,context menu(上下文菜单)特点:在view上按上2s后显示不支持icon和快捷键3,sub menu(子菜单)特点:以上两种可以加入子菜单子菜单不能嵌套子菜单----android系统,菜单只有两层子菜单不支持icon
三、菜单分组功能
把相似功能的菜单分成同一组,通过调用setGroupCheckable,setGroupEnabled,setGroupVisible设置属性,无须单独设置
四、菜单创建方式
创建方式有两种:
1,通过在布局文件中声明创建<menu>根元素,里面嵌套<item>和<group>子元素,<item>可以嵌套<menu>形成子菜单<group>(表示一个菜单组)元素的属性说明:
id:唯一标识该菜单组引用idmenuCategory:对菜单进行分类,定义菜单的优先级,有效值为container、system、secondary、alternative。orderInCategory:一个分类排序整数。checkableBehavior:选择行为,单选、多选还是其他。有效值为none、all、singlevisible:是否可见,值true和falseenabled:是否可用,true或false。
<item>表示菜单项。
id:唯一标识该菜单组引用idmenuCategory:菜单分类orderInCategory:分类排序title:菜单标题字符串titleCondensed:浓缩标题,适合标题太长的时候使用。icon:菜单的图标alphabeticShortcut:字符快捷键numericShortcut:数字快捷键checkable:是否可选chexked:是否已经被选visible:是否可见,值true和falseenabled:是否可用,true或false。
2,另一种通过在代码中创建。
(1)Context Menu 代码之上下文菜单特点:在view上按上2s后显示。 不支持icon和快捷键当用户长事件按键不放时,弹出的菜单为上下文菜单。(windows里右键单击弹出的菜单)步骤:
1,onCreateContextMenu()方法,调用Menu的add方法添加菜单项2,onContextItemSelected()方法相应菜单单击事件3,调用registerForContextMenu()方法,为视图注册上下文菜单
(2) Option Menu 代码之选项菜单当用户点击设备上的菜单(menu)按键时,弹出的菜单就是选项菜单。选项菜单菜单项最多只能有6个,超过第六个第六个帝宗显示更多。步骤:
1,覆盖Activity的onCreateOptionsMenu(Menu menu)方法,第一次打开时自动调用2,调用Menu的add()方法添加菜单项(MenuItem),可调用MenuItem的setIcon()方法设置图标3,当菜单项(Menuitem)被选择,调用onOptionsItemSelected()方法来响应事件
(3) Sub Menu 代码之子菜单就是将相同功能的分组进行多级显示的一种菜单(如:windows“文件”菜单中又有“新建”、“打开”等子菜单)特点:以上两种可以加入子菜单子菜单不能嵌套子菜单----android系统,菜单只有两层子菜单不支持icon步骤:
1,onCreateOptionsMenu()方法,调用Menu的addSubMenu()方法添加子菜单项2,调用SubMenu的add()方法,添加子菜单(Sub Menu)3,onContextItemSelected(0方法相应菜单点击事件