Android开发之Menu的应用

本文深入解析Android中的三种菜单类型:选项菜单、上下文菜单与子菜单的使用方法与实现细节,通过具体代码实例展示如何创建、配置并响应这些菜单,帮助开发者构建更丰富的用户交互体验。

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

Android中有三种类型的菜单(Menu),一种是选项菜单,即按下手机的menu键在底部弹出来的菜单,一种是上下文菜单,即长按屏幕弹出来的菜单,还有一种是子菜单,子菜单是可以被添加到其他菜单上面的菜单,当我们的菜单有很多的时候,需要将菜单分类,一类就是一个子菜单。
首先介绍下选项菜单的用法
Android开发之Menu的应用
图1

第一步,按下menu键弹出选项菜单,必须重写Activity的onCreateOptionsMenu(Menu menu)方法
public boolean onCreateOptionsMenu(Menu menu) {
  super.onCreateOptionsMenu(menu);
  int MENU_ONE = menu.FIRST;
  int MENU_TWO = menu.FIRST + 1;
  int MENU_THREE = menu.FIRST + 2;
  int MENU_FOUR = menu.FIRST + 3;
  int MENU_FIVE = menu.FIRST + 4;
  int MENU_SIX = menu.FIRST + 5;
  int MENU_SEVEN = menu.FIRST + 6;
  int MENU_EIGHT = menu.FIRST + 7;
  //设置数字快捷键
  menu.add(0,MENU_ONE,0,"菜单一").setIcon(R.drawable.one).setNumericShortcut('1');
  menu.add(0,MENU_TWO,0,"菜单二").setIcon(R.drawable.two);
  SubMenu subMenu = menu.addSubMenu("搜索...");
  subMenu.setIcon(R.drawable.find);
  subMenu.add(0, 899, 0, "本地");
  subMenu.add(0, 890, 0, "网络");
  menu.add(0,MENU_THREE,0,"菜单三").setIcon(R.drawable.three);
  menu.add(0,MENU_FOUR,0,"菜单四").setIcon(R.drawable.four);
  menu.add(0,MENU_FIVE,0,"菜单五").setIcon(R.drawable.five);
  menu.add(0,MENU_SIX,0,"菜单六").setIcon(R.drawable.six);
  menu.add(0,MENU_SEVEN,0,"菜单七").setIcon(R.drawable.seven);
  menu.add(0,MENU_EIGHT,0,"菜单八").setIcon(R.drawable.eight);
  return true;
}
  以上的代码中包含了子菜单的用法,
  由此段代码来实现,subMenu 和普通的菜单项没啥大地区别,点击它后会弹出子菜单,如图2
  SubMenu subMenu = menu.addSubMenu("搜索...");
  subMenu.setIcon(R.drawable.find);
  subMenu.add(0, 899, 0, "本地");
  subMenu.add(0, 890, 0, "网络");
 
Android开发之Menu的应用
                                          图 2
不管是munu还是submenu的add方法,第二个参数都表示该item的唯一标识,用户按下某一个选项之后,程序就会根据唯一标识做出相应的处理,这里,就必须重写Android的另外一个方法
public boolean onOptionsItemSelected(MenuItem item) {
super.onOptionsItemSelected(item);
switch(item.getItemId()){
case MENU_ONE:。。。
                case MENU_ONE:。。。
                default:break;
}
return true;
}
比较简单,不再赘述!

上下文菜单的用法与选项菜单的用法类似,这里贴出关键代码
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
Toast.makeText(MainActivity.this, "创建了上下文菜单", 1).show();
menu.add(0, 1, 0, "新建");
menu.add(0, 2, 0, "打开").setIcon(R.drawable.icon);
super.onCreateContextMenu(menu, v, menuInfo);
}
public boolean onContextItemSelected(MenuItem item) {
switch(item.getItemId()){
case 1:
Toast.makeText(MainActivity.this,"新建", 1).show();
// ...
break;
case 2:
Toast.makeText(MainActivity.this,"打开", 1).show();
// ...
break;
}
return super.onContextItemSelected(item);
}

到此,有关菜单的内容介绍完毕!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值