1.1>选项菜单:当用户单击Android虚拟机上的Menu按钮时弹出的菜单就是选项菜单。选项菜单最多只能有六个,若多于六个则虚拟机会自动把第六个图标换成“更多”,单击“更多”显示其他选项。
创建选项菜单步骤:
(1).覆盖Activity的onCreateOptionsMenu(Menu menu)方法,当我们第一次打开menu菜单时该方法被自动调用。
(2).调用Menu的add()方法添加菜单项(MenuItem),可以调用MenuItem的setIcon()方法来为菜单项设置图标。
(3).当菜单项(Menuitem)被选择时,覆盖Activity的onOptionsItemSelected()方法来相应事件。
如下代码块:
public boolean onCreateOptionsMenu(Menu menu) {
menu.add(0,ITEM1,1,R.string.menu_start);
menu.add(0,ITEM2,2,R.string.menu_back);
return true;
}
public boolean onOptionsItemSelected(MenuItem item){
switch(item.getItemId()){
case ITEM1:
setTitle("开始游戏!");
break;
case ITEM2:
setTitle("退出!");
break;
}
return true;
}
1.2>上下文菜单:当用户长时间按键不放时,弹出的菜单为上下文菜单。
(1).覆盖Activity的onCreateContextMenu()方法,调用Menu的add方法添加菜单项(MenuItem)。
(2).覆盖Activity的onContextItemSelected()方法,相应菜单单击事件。
(3).调用registerForContextMenu()方法,为视图注册上下文菜单。
如下代码块:
public void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) {
menu.add(0,ITEM1,0,"红色背景");
menu.add(0,ITEM2,0,"黄色背景");
menu.add(0,ITEM3,0,"蓝色背景");
}
public boolean onContextItemSelected(MenuItem item) {
switch(item.getItemId()){
case ITEM1:
tv1.setBackgroundColor(Color.RED);
break;
case ITEM2:
tv1.setBackgroundColor(Color.YELLOW);
break;
case ITEM3:
tv1.setBackgroundColor(Color.BLUE);
break;
}
return true;
}
1.3>子菜单:将相同功能分组进行多级显示的一种菜单。
(1).覆盖Activity的OnCreateOptionMenu()方法,调用Menu的addSubMenu()方法添加子菜单(Sub Menu)。
(2).调用SubMenu的add()方法,添加子菜单(Sub Menu)。
(3).覆盖onContextItemSelected()方法,响应菜单单击事件。
如下代码块:
public boolean onCreateOptionsMenu(Menu,menu){
SubMenu file=menu.addSubMenu("文件");
SubMenu edit=menu.addSubMenu("新建");
file.add(0,ITEM1,0,"新建");
file.add(0,ITEM2,0,"打开");
return true;
}
public boolean onOptionsItemSelected(MenuItem item){
switch(item.getItemId()){
case ITEM1:
setTitle("新建文件!");
break;
case ITEM2:
setTitle("打开文件!");
break;
}
return true;
}