Android 创建菜单Menu

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

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

图一:



创建方式(代码):
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时会弹出 上下文菜单,是弹出列表形式

图二:


创建方式:
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 一样
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值