Android 创建菜单Menu

本文详细介绍了Android中三种菜单的创建方法:OptionsMenu、ContextMenu和Submenu。包括如何通过代码创建这些菜单及其对应的事件处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Android 创建菜单Menu
menu分三种:
Options menu 选项菜单
Context menu 上下文菜单
Submenu 子菜单

Options menu 是通过单击menu,显示出来的菜单,最多显示六个,多余的会自动生成expanded menu(list形式弹出),在菜单中以“more”标识;单击“more”时会弹出list菜单;

图一:
[img]http://dl.iteye.com/upload/attachment/362808/2adaae04-ce60-3155-a78e-5d37dd2ec247.png[/img]


创建方式(代码):
public boolean onCreateOptionsMenu(Menu menu) {
menu.add(0, MENU_NEW_GAME, 0, "New Game");
menu.add(0, MENU_QUIT, 0, "Quit");
return true;
}
其中menu.add(groupId, itemId, order, title)方法是向菜单中添加一个菜单项
groupId 是组id,可将多个菜单项分为一组,可以对一组进行整体控制
itemId 是添加的菜单项的id,用以标识该项,事件处理时会用到
order 控制菜单项的显示顺序,默认按添加的顺序进行显示
title 菜单项的标题,即当单击menu键时,显示出菜单,每项上的文字

该方法有返回值 MenuItem 类型,即得到添加的MenuItem,可以对该MenuItem进行特别的处理,比如:
调用setIcon 方法为其设置显示图标;

事件处理:
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case MENU_NEW_GAME:
newGame();
return true;
case MENU_QUIT:
quit();
return true;
}
return false;
}
当选中菜单中的某一项时,会触发该方法,通过item.getItemId(),可以取得选中的项,根据需要,对每项编写事件处理即可

ContextMenu 是上下文菜单,功能类似于PC机中的鼠标右键功能,ContextMenu会注册给某一个View,当长按该View时会弹出 上下文菜单,是弹出列表形式

图二:
[img]http://dl.iteye.com/upload/attachment/362812/a21ce871-e492-3d37-bafb-1c760012f123.png[/img]

创建方式:
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
menu.add(0, EDIT_ID, 0, "Edit");
menu.add(0, DELETE_ID, 0, "Delete");
}

事件处理:
public boolean onContextItemSelected(MenuItem item) {
AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
switch (item.getItemId()) {
case EDIT_ID:
editNote(info.id);
return true;
case DELETE_ID:
deleteNote(info.id);
return true;
default:
return super.onContextItemSelected(item);
}
}
创建与事件处理都与Options Menu 一样

Submenu 子菜单
子菜单可以被加到任意的其它菜单中,但不能被加到其它的子菜单中,通过Menu的addSubMenu()方法添加
创建方式
public boolean onCreateOptionsMenu(Menu menu) {
boolean result = super.onCreateOptionsMenu(menu);
SubMenu fileMenu = menu.addSubMenu("File");
SubMenu editMenu = menu.addSubMenu("Edit");
fileMenu.add("new");
fileMenu.add("open");
fileMenu.add("save");
editMenu.add("undo");
editMenu.add("redo");

return result;
}
事件处理与Options Menu 一样
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值