Android的菜单分为三种类型:选项菜单(Option Menu)、上下文菜单(Context Menu)、子菜单(Sub Menu) 一.选项菜单
当用户单击设备上的菜单按钮(Menu),触发事件弹出的菜单就是选项菜单。选项菜单最多只有六个,超过六个第六个就会自动显示 更多 选项来展示显示。 创建方法:
1、覆盖Activity的onCreateOptionsMenu(Menu menu)方法,当我们第一次打开菜单时调用。 2、调用Menu的add()方法添加菜单项(MenuItem),可以调用MenuItem的setIcon()方法为菜单项设置图标。
3、当菜单项(MenuItem)被选中时,覆盖Acitivy的onOptionsMenuSelected()方法响应事件。
二、上下文菜单
当用户长按Activity页面时,弹出的菜单我们称为上下文菜单。我们经常在Windows中用鼠标右键单击弹出的菜单就是上下文菜单。 1、覆盖Activity的onCreateContextMenu()方法,调用Menu的add方法添加菜单项MenuItem 2、覆盖onContextItemSelected()方法,响应菜单单击事件
3、调用registerForContextMenu()方法,为视图注册上下文菜单 三、子菜单
子菜单就是将相同功能的分组进行多级显示的一种菜单,比如,Windows的“文件”菜单中就有“新建”,“打开”,“关闭”等子菜单。 创建子菜单的方法
1、覆盖Activity的onCreateOptionsMenu()方法,调用Menu的addSubMenu()方法添加子菜单项
2、调用SubMenu的add()饭饭,添加子菜单项
3、覆盖onCreateItemSelected()方法,响应菜单单击事件
Java代码
1.publicclassMainextendsActivity{ 2.
3.//菜单项ID
4.//FIRST为Menu类中的整形常量
5.privatestaticfinalintITEM1=Menu.FIRST; 6.privatestaticfinalintITEM2=Menu.FIRST+1; 7.privatestaticfinalintITEM3=Menu.FIRST+2; 8.privatestaticfinalintITEM4=Menu.FIRST+3; 9.privatestaticfinalintITEM5=Menu.FIRST+4; 10.privatestaticfinalintITEM6=Menu.FIRST+5; 11.privatestaticfinalintITEM7=Menu.FIRST+6; 12.
13.TextViewmyTV; 14.
15.@Override
16.publicvoidonCreate(BundlesavedInstanceState){ 17.super.onCreate(savedInstanceState); 18.setContentView(R.layout.main); 19.
20.myTV=(TextView)findViewById(R.id.myTV);
21.//此时为myTv设置上下文菜单,长按TextView时响应函数 22.registerForContextMenu(myTV); 23.} 24.
25.@Override
26.//点击菜单按钮响应的事件
27.publicbooleanonCreateOptionsMenu(Menumenu){ 28./*一下代码为选项菜单测试 29.//添加菜单项
30.//publicabstractMenuItemadd(intgroupId,intitemId,intorder,CharSequencetitle)
31.//菜单所在的group,菜单的ID,排列顺序,显示的文字
32.//add()方法返回一个MenuItem对象。而setIcon是MenuItem的方法 33.menu.add(0,ITEM1,0,\"开始\").setIcon(R.drawable.ic_launcher); 34.menu.add(0,ITEM2,0,\"开始1\"); 35.menu.add(1,ITEM3,0,\"开始2\"); 36.menu.add(1,ITEM4,0,\"开始3\"); 37.menu.add(1,ITEM5,0,\"开始4\"); 38.//menu.add(0,ITEM6,0,\"开始5\"); 39.//menu.add(0,ITEM7,0,\"开始6\"); 40.*/ 41. 42./**
43.*以下代码为添加子菜单的测试代码 44.*/
45.//添加子菜单
46.SubMenusubFile=menu.addSubMenu(\"文件\"); 47.SubMenueditFile=menu.addSubMenu(\"编辑\"); 48.
49.//为子菜单添加菜单项
50.subFile.add(0,ITEM1,0,\"新建\"); 51.subFile.add(0,ITEM2,0,\"打开\"); 52.
53.returntrue; 54.} 55.
56.@Override
57.//菜单被选中时触发的事件
58.publicbooleanonOptionsItemSelected(MenuItemitem){
59./*//在此说明一下,Menu相当于一个容器,而MenuItem相当于容器中容纳的东西 60.switch(item.getItemId()){ 61.caseITEM1:
62.//设置Activity的Title 63.setTitle(\"开始游戏1\"); 64.break; 65.caseITEM2:
66.setTitle(\"开始游戏2\"); 67.break; 68.caseITEM3:
69.setTitle(\"开始游戏3\"); 70.break; 71.caseITEM4:
72.setTitle(\"开始游戏4\"); 73.break; 74.caseITEM5:
75.setTitle(\"开始游戏5\"); 76.break; 77.caseITEM6:
78.setTitle(\"开始游戏6\"); 79.break; 80.caseITEM7:
81.setTitle(\"开始游戏7\"); 82.break; 83.} 84.*/ 85. 86./**
87.*子菜单项响应代码 88.*/
89.switch(item.getItemId()){ 90.caseITEM1:
91.//设置Activity的Title 92.setTitle(\"新建文件\"); 93.break; 94.caseITEM2:
95.setTitle(\"打开文件\"); 96.break; 97.}
98.returntrue; 99.} 100.
101.@Override
102.//创建上下文菜单
103.publicvoidonCreateContextMenu(ContextMenumenu,Viewv, 104.ContextMenuInfomenuInfo){ 105.//向上下文菜单中添加菜单项
106.//注意此处的menu是ContextMenu 107.menu.add(0,ITEM1,0,\"红色背景\"); 108.menu.add(0,ITEM2,0,\"绿色背景\"); 109.menu.add(1,ITEM3,0,\"白色背景\"); 110.} 111.
112.@Override
113.publicbooleanonContextItemSelected(MenuItemitem){ 114.switch(item.getItemId()){ 115.caseITEM1:
116.myTV.setBackgroundColor(Color.RED); 117.break; 118.caseITEM2:
119.myTV.setBackgroundColor(Color.GREEN); 120.break; 121.caseITEM3:
122.myTV.setBackgroundColor(Color.WHITE); 123.break; 124.}
125.returntrue; 126.} 127.}
因篇幅问题不能全部显示,请点此查看更多更全内容