Android开发之Menu(菜单功能)学习小结

本文详细介绍了Android平台下三种菜单实现方式:OptionMenu、ContextMenu与SubMenu。包括创建、配置和响应用户操作的方法。通过具体代码示例展示了如何添加菜单项、监听用户点击事件并进行相应处理。

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

Android平台提供了3中菜单的实现方式,即选项菜单(OptionMenu)、上下文菜单(ContextMenu)、子菜单(SubMenu).
总的来说,还是比较容易实现的,新手上路,学了就把大概的写下来,以备健忘吧。

1 Option Menu
这种应该是最常见的,一般手机上都会提供Menu的按钮,对应的就是这个菜单弹出。

主要步骤就是复写Activity父类中的onCreateOptionMenu(Menu menu)方法,然后通过Menu的add方法来添加菜单进去。

Java代码   收藏代码
  1. @Override  
  2. public boolean onCreateOptionsMenu(Menu menu) {  
  3.     menu.add(0, MENU_ITEM_COUNTER, 0"开始");  
  4.     menu.add(0, MENU_ITEM_COUNTER + 10"暂停");  
  5.     menu.add(0, MENU_ITEM_COUNTER + 20"结束");  
  6.   
  7.     return super.onCreateOptionsMenu(menu);  
  8. }  

ItemId是可以自己定义的int。
Java代码   收藏代码
  1. private static final int MENU_ITEM_COUNTER = Menu.FIRST;  


设置好Menu后需要对每一个MenuItem进行定义处理,当用户点击是会调用onOptionsItemSelected(MenuItem item)这个方法,需要对该方法进行重写
Java代码   收藏代码
  1. @Override  
  2. public boolean onOptionsItemSelected(MenuItem item) {  
  3.     switch (item.getItemId()) {  
  4.     case MENU_ITEM_COUNTER:  
  5.         myTextView.setText("You click " + item.getTitle().toString()  
  6.                 + "Menu");  
  7.         break;  
  8.     case MENU_ITEM_COUNTER + 1:  
  9.         myTextView.setText("You click " + item.getTitle().toString()  
  10.                 + "Menu");  
  11.         break;  
  12.     case MENU_ITEM_COUNTER + 2:  
  13.         myTextView.setText("You click " + item.getTitle().toString()  
  14.                 + "Menu");  
  15.         break;  
  16.     default:  
  17.         break;  
  18.     }  
  19.     return super.onOptionsItemSelected(item);  
  20. }  
这边我做了一个简单的处理,就对TextView进行了Text修改,这里可以做很多业务逻辑。
tip:Android最多支持6个MenuItem,多了以后就摆在More里面。





2.Context Menu
翻译过来就是上下文菜单,其实知道Context最好是意会搞开发的都懂的,这个Mnue还是相当有用的,比如对于文件管理器来说一些增删改查就可以摆在ContextMenu中,它其实是实现了一个用户长按点击后弹出的来一个菜单。
写了一个例子,我感觉有点糟蹋这个功能了,不过也无所谓啦,只是例子。

首先,ContextMenu在新建是会调onCreateContextMune(Menu menu)方法,我们需要对它进行复写。
Java代码   收藏代码
  1. @Override  
  2.     public void onCreateContextMenu(ContextMenu menu, View v,  
  3.             ContextMenuInfo menuInfo) {  
  4.           
  5.         //设置面积大一点,好点唉  
  6.         myTextView.setText("*******************************\n" + "要大一些看得才清楚的"  
  7.                 + "*******************************\n");  
  8.           
  9.         //itemId注意不要重复,否则处理起来很蛋疼  
  10.         menu.add(0, MENU_ITEM_COUNTER + 30"白色");  
  11.         menu.add(0, MENU_ITEM_COUNTER + 40"红色");  
  12.         menu.add(0, MENU_ITEM_COUNTER + 50"蓝色");  
  13.   
  14.         super.onCreateContextMenu(menu, v, menuInfo);  
  15.     }  

然后注册一下
Java代码   收藏代码
  1. //要记得在需要的控件上注册上下文菜单  
  2.     registerForContextMenu(myTextView);  


当用户点击时会调用onContextItemSelected(MenuItem item)方法,对其重写
Java代码   收藏代码
  1. @Override  
  2. public boolean onContextItemSelected(MenuItem item) {  
  3.       
  4.     //根据选择不同,对Text进行不同背景色的显示  
  5.     switch (item.getItemId()) {  
  6.     case MENU_ITEM_COUNTER + 3:  
  7.         myTextView.setBackgroundColor(Color.WHITE);  
  8.         break;  
  9.     case MENU_ITEM_COUNTER + 4:  
  10.         myTextView.setBackgroundColor(Color.RED);  
  11.         break;  
  12.     case MENU_ITEM_COUNTER + 5:  
  13.         myTextView.setBackgroundColor(Color.BLUE);  
  14.         break;  
  15.     default:  
  16.         break;  
  17.     }  
  18.       
  19.     return super.onContextItemSelected(item);  
  20. }  

其实看看就知道了,两种实现Menu的方式几乎是一样的,只是在调用方法的时候不一样而已。





3 Sub Menu
个人觉得子菜单的概念应该是从属于以上两个菜单类型的,即两种菜单类型中都可以使用子菜单。
实现很简单
Java代码   收藏代码
  1. //申明一个子菜单  
  2. SubMenu subMenu = menu.addSubMenu("这个是一个子菜单");  
  3. subMenu.add(0, MENU_ITEM_COUNTER + 60"这个是子菜单的内容"); 
转载: http://nullpointsun.iteye.com/blog/1589850
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值