Android-三种菜单栏实现

原创 2016年08月29日 11:15:11

Android-三种菜单栏实现(OptionMenu,SubMenu,ContextMenu)


1.回顾

   上篇学习了 安卓的 notification 通知实现

2.重点

   (1)OptionMenu 的 动态和 静态实现

   (2)Submenu 的动态和静态实现

   (3)ContextMenu 的 动态和静态实现

3.OptionMenu实现

   3.1 OptionMenu 菜单栏效果图

                                                             

     3.2 静态实现(menu 文件下新建 menu.xml)

  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <menu xmlns:android="http://schemas.android.com/apk/res/android" >  
  3.   
  4.     <item  
  5.         android:id="@+id/option_item1"  
  6.         android:orderInCategory="100"  
  7.         android:title="去OptionActivity"/>  
  8.     <item  
  9.         android:id="@+id/option_item2"  
  10.         android:orderInCategory="100"  
  11.         android:title="去Contextmenu"/>  
  12.   
  13. </menu> 

    3.3 业务实现

  1. /** 
  2.  * 重写 onCreateOptionsMenu 
  3.  */  
  4. @Override  
  5. public boolean onCreateOptionsMenu(Menu menu) {  
  6.   
  7.     //动态实现  
  8.  MenuItem item= menu.add(111,"河南");  
  9.  item.setTitle("原");  
  10.     menu.add(121,"理工");  
  11.     menu.add(131,"大学");  
  12.     menu.add(231,"焦作");  
  13.       
  14.     //加载 布局实现  
  15.     getMenuInflater().inflate(R.menu.option_menu, menu);  
  16.     return super.onCreateOptionsMenu(menu);  

   3.4 选择事件 

  1. /** 
  2.      * 菜单 点击 重写onMenuItemSelected 
  3.      */  
  4.     @Override  
  5.     public boolean onMenuItemSelected(int featureId, MenuItem item) {  
  6.           
  7.          Toast.makeText(getApplicationContext(),featureId+" | "+item.getTitle(),Toast.LENGTH_LONG).show();  
  8.         // item 点击  
  9.         switch (item.getItemId()) {  
  10.         case R.id.option_item1:  
  11.              Intent intent= new Intent(MainActivity.this,OptionActivity.class);  
  12.              intent.putExtra("data",item.getTitle());  
  13.              item.setIntent(intent);  
  14.             break;  
  15.         case R.id.option_item2:  
  16.             Intent intent1= new Intent(MainActivity.this,ContextmenuActivity.class);  
  17.              item.setIntent(intent1);  
  18.             break;  
  19.         }  
  20.         return super.onMenuItemSelected(featureId, item);  
  21.     } 

4.Submenu 实现

    4.1 SubMenu 菜单效果图

                                                              

   4.2 静态实现 menu.xml

  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <menu xmlns:android="http://schemas.android.com/apk/res/android" >  
  3.   
  4.     <item  
  5.         android:id="@+id/sub_one"  
  6.         android:title="工程">  
  7.         <menu>  
  8.             <item  
  9.                 android:id="@+id/sub_one_item1"  
  10.                 android:orderInCategory="100"  
  11.                 android:title="Open project"/>  
  12.             <item  
  13.                 android:id="@+id/sub_one_item2"  
  14.                 android:orderInCategory="100"  
  15.                 android:title="Close project"/>  
  16.             <item  
  17.                 android:id="@+id/sub_one_item3"  
  18.                 android:orderInCategory="100"  
  19.                 android:title="HI project"/>  
  20.         </menu>  
  21.     </item>  
  22.     <item  
  23.         android:id="@+id/sub_two"  
  24.         android:title="窗体">  
  25.         <menu>  
  26.             <item  
  27.                 android:id="@+id/sub_two_item1"  
  28.                 android:orderInCategory="100"  
  29.                 android:title="show view"/>  
  30.             <item  
  31.                 android:id="@+id/sub_two_item2"  
  32.                 android:orderInCategory="100"  
  33.                 android:title="preference"/>  
  34.             <item  
  35.                 android:id="@+id/sub_two_item3"  
  36.                 android:orderInCategory="100"  
  37.                 android:title="New Window"/>  
  38.         </menu>  
  39.     </item>  
  40.   
  41. </menu> 

   4.3 业务实现

  1. /** 
  2.      * 创建菜单 
  3.      */  
  4.     @Override  
  5.     public boolean onCreateOptionsMenu(Menu menu) {  
  6.          
  7.         //动态创建(代码创建)  
  8.         //添加第一项  
  9. //      SubMenu subMenu= menu.addSubMenu("工程");  
  10. //      subMenu.add(1, 1, 1,"打开工程");  
  11. //      subMenu.add(1, 2, 1,"关闭工程");  
  12. //      subMenu.add(1, 3, 1,"Build工程");  
  13. //      subMenu.add(1, 4, 1,"Clean工程");  
  14. //      //添加第二项  
  15. //      SubMenu subMenu1= menu.addSubMenu("窗口");  
  16. //      subMenu1.add(2, 1, 1,"new Window");  
  17. //      subMenu1.add(2, 2, 1,"Editer");  
  18. //      subMenu1.add(2, 3, 1,"Show View");  
  19. //      subMenu1.add(2, 4, 1,"Preference");  
  20.           
  21.         //布局实现  
  22.         getMenuInflater().inflate(R.menu.sub_menu, menu);  
  23.   
  24.         return super.onCreateOptionsMenu(menu);  
  25.     }  
  26.     /** 
  27.      * item 点击事件 
  28.      */  
  29.     @Override  
  30.     public boolean onOptionsItemSelected(MenuItem item) {  
  31.           
  32.         //可以同过 id 判断  
  33.           
  34.         Toast.makeText(getApplicationContext(),item.getTitle(),Toast.LENGTH_LONG).show();  
  35.           
  36.         return super.onOptionsItemSelected(item);  
  37.     } 

5.ContextMenu 上下文菜单实现

    5.1 ContextMenu 菜单效果图

                                                             


     5.2 静态实现 布局

  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <menu xmlns:android="http://schemas.android.com/apk/res/android" >  
  3.   
  4.     <item  
  5.         android:id="@+id/context_item1"  
  6.         android:orderInCategory="100"  
  7.         android:showAsAction="never"  
  8.         android:title="我是xml"/>  
  9.     <item  
  10.         android:id="@+id/context_item2"  
  11.         android:orderInCategory="100"  
  12.         android:showAsAction="never"  
  13.         android:title="我是xml2"/>  
  14.     <item  
  15.         android:id="@+id/context_item3"  
  16.         android:orderInCategory="100"  
  17.         android:showAsAction="never"  
  18.         android:title="我是xml3"/>  
  19.     <item  
  20.         android:id="@+id/context_item4"  
  21.         android:orderInCategory="100"  
  22.         android:showAsAction="never"  
  23.         android:title="我是xml4"/>  
  24.   
  25. </menu> 

   5.3 业务实现

  1. /** 
  2.      * 重新 onCreateContextMenu 添加菜单 
  3.      */  
  4.     @Override  
  5.     public void onCreateContextMenu(ContextMenu menu, View v,  
  6.             ContextMenuInfo menuInfo) {  
  7.         // 重写 ContextMenu 方法  
  8.         // 动态加载  
  9.         menu.add(111"干嘛");  
  10.         menu.add(121"哇哦");  
  11.         menu.add(131"咳咳");  
  12.         menu.add(141"哈哈");  
  13.           
  14.         //布局添加  
  15.         getMenuInflater().inflate(R.menu.context_menu, menu);  
  16.   
  17.         super.onCreateContextMenu(menu, v, menuInfo);  
  18.     }  
  19.       
  20.       
  21.     /** 
  22.      * 菜单 项点击事件 
  23.      */  
  24.     @Override  
  25.     public boolean onContextItemSelected(MenuItem item) {  
  26.         textView1.setText(item.getItemId()+" | "+item.getTitle());  
  27.         //判断 点击的id , 不同的操作使用 switch  
  28.         switch (item.getItemId()) {  
  29.         case 1:  
  30.             Toast.makeText(getApplicationContext(),"我就是要"+item.getTitle(),Toast.LENGTH_SHORT).show();  
  31.             break;  
  32.         case 2:  
  33.             Toast.makeText(getApplicationContext(),"你快看"+item.getTitle(),Toast.LENGTH_SHORT).show();  
  34.             break;  
  35.         case 3:  
  36.             Toast.makeText(getApplicationContext(),"老头子!"+item.getTitle(),Toast.LENGTH_SHORT).show();  
  37.             break;  
  38.         case 4:  
  39.             Toast.makeText(getApplicationContext(),"你是。。。!"+item.getTitle(),Toast.LENGTH_SHORT).show();  
  40.             break;  
  41.         case R.id.context_item1:  
  42.             Toast.makeText(getApplicationContext(),"context_item1",Toast.LENGTH_SHORT).show();  
  43.             break;  
  44.         case  R.id.context_item2:  
  45.             Toast.makeText(getApplicationContext(),"context_item2",Toast.LENGTH_SHORT).show();  
  46.             break;  
  47.         case  R.id.context_item3:  
  48.             Toast.makeText(getApplicationContext(),"context_item3",Toast.LENGTH_SHORT).show();  
  49.             break;  
  50.         case  R.id.context_item4:  
  51.             Toast.makeText(getApplicationContext(),"context_item4",Toast.LENGTH_SHORT).show();  
  52.             break;  
  53.           
  54.         }  
  55.         return super.onContextItemSelected(item);  
  56.     } 

6.demo 免积分下载

http://download.csdn.net/detail/lablenet/9050689
版权声明:本文为博主原创文章,未经博主允许不得转载。

Android仿微信底部菜单栏+顶部菜单栏(附源码)

本文要实现仿微信微信底部菜单栏+顶部菜单栏,采用ViewPage来做,每一个page对应一个XML,当手指在ViewPage左右滑动时,就相应显示不同的page(其实就是xml)并且同时改变底部菜单按...
  • Evankaka
  • Evankaka
  • 2015年03月07日 23:07
  • 30097

【Android基础知识】选项菜单、上下文菜单、子菜单的使用

Android菜单类型 菜单是为了增加更多的功能,不占用屏幕的空间。Android中菜单类型有三类,选项菜单(OptionMenu)、上下文菜单(ContextMenu)、子菜单(SubMenu),下...

android 底部固定菜单栏的实现(一)

android底部固定按钮菜单栏在很多的APP的UI设计中都是必须重视的一个环节。而该开始这也是非常困扰我的一个模块。主要的考虑体现在以下几个部分:1.如何让底部按钮都能沉在页面最下方,而不随着不同的...

安卓仿微信界面,导航,右上角菜单栏

下面是安卓开发仿微信界面的代码。分为3步,第一步是界面的编写,第二步是导航界面,第三步是右上角菜单栏。开始第一步前先预览一下效果。 第一步,界面。界面的思路是利用ViewPager+Fragment...

Android中工具栏菜单使用示例

Android中工具栏菜单使用示例

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

android之三大菜单(子菜单,选项菜单,上下文菜单)

今天班级同学聚餐,真的是喝的有点多,本来计划今天要完成这篇博客。有点喝多了,写的不好请见谅。想仔细了解的话,看官网说的,是中文的。 https://developer.android.com/g...

安卓添加应用栏的菜单键(三个点)

前言 当新建android工程后,发现原来使用的ActionBar的屏幕右上角的三个点不再出现了(如图中3),它是因为什么原因不在出现了呢?如果不是我自己的原因,那怎么才能搞出来。这个问题通过下面的...

Android界面编程——导航栏及菜单(六)

Android界面编程——导航栏及菜单 2.7导航栏及菜单 2.7.1  ActionBar ActionBar是Android3.0(API 11)开始增加的新特性,ActionBar出现在活动窗...

Android_三种菜单介绍

Android的菜单分为三种类型:选项菜单(Option Menu)、上下文菜单(Context Menu)、子菜单(Sub Menu) 一.选项菜单 当用户单击设备上的菜单按钮(Menu),...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android-三种菜单栏实现
举报原因:
原因补充:

(最多只允许输入30个字)