android中包含多种菜单,本例带来的是选项菜单和上下文菜单。

1.选项菜单

在android中,开发者可以在xml文档中部署所要添加的菜单,在后台调用即可。

 1 <menu xmlns:android="http://schemas.android.com/apk/res/android" > 2  3     <item 4         android:id="@+id/action_add" 5         android:title="添加" 6         android:showAsAction="always|withText"/> 7     <item 8         android:id="@+id/action_save" 9         android:title="保存"10         android:showAsAction="ifRoom"/>11     <item12         android:id="@+id/action_discard"13         android:title="删除"14         android:showAsAction="ifRoom"/>15     <item16         android:id="@+id/action_delete"17         android:title="删除"18         android:showAsAction="ifRoom"/>19     <item20         android:id="@+id/action_undo"21         android:title="撤销"22         android:showAsAction="ifRoom"/>23 </menu>
menu.xml

在xml中我们定义了几个常用的菜单,添加、删除、保存等。在xml中定义菜单式通过在<menu/>中定义的。<item/>即为菜单项。android最多可以有六个菜单,超出之后android系统会自动将超出的菜单放在更多的菜单项。

1     public boolean onCreateOptionsMenu(Menu menu) {2         Inflate the menu; this adds items to the action bar if it is present.3          MenuInflater inflater = getMenuInflater();4          inflater.inflate(R.menu.main, menu);5          mOptionsMenu = menu;6         7             return super.onCreateOptionsMenu(menu);8     }
菜单显示

重写onCreateOptionsMenu方法,这里调用已经定义好的menu.xml,可以显示我们刚刚定义的菜单项。

在开发中,菜单也是与事件分不开的。通过onoptionsitemclick,来监听菜单的选中事件。

 1 public boolean onOptionsItemSelected(MenuItem menu) 2     { 3      4         switch(menu.getItemId()) 5         { 6         case R.id.action_add: 7             Toast.makeText(this, "您点击了添加", Toast.LENGTH_LONG).show(); 8             return true; 9         case R.id.action_delete:10             Toast.makeText(this, "您点击了删除", Toast.LENGTH_LONG).show();11             return true;12         case R.id.action_save:13             Toast.makeText(this, "您点击了保存", Toast.LENGTH_LONG).show();14             return true;15         case R.id.action_undo:16             Toast.makeText(this, "你点击了撤销", Toast.LENGTH_LONG).show();17             return true;18              default:19                     return super.onOptionsItemSelected(menu);20         }21     22             23         24     }
菜单事件

当然,开发人员也可以动态的添加菜单,不需要在xml中预先写好每一个菜单项。

mOptionsMenu.add(1, 1, 1, "添加");第一个参数:菜单项的分组id;第二个参数:菜单项的id;第三个参数:菜单显示顺序的id,android会根据id进行从左到右,从上到下的排序;第四个参数:菜单项的标题

2.子菜单和上下文菜单

在android中,子菜单和菜单是同一级的,可以通过submenu.add添加子菜单。添加一个带复选框的子菜单

 1     public boolean onCreateOptionsMenu(Menu menu) { 2         // Inflate the menu; this adds items to the action bar if it is present. 3         // MenuInflater inflater = getMenuInflater(); 4             //inflater.inflate(R.menu.main, menu); 5            // mOptionsMenu = menu; 6         SubMenu filesubmenu=menu.addSubMenu(1,1,2,"文件"); 7         MenuItem newMenu=filesubmenu.add(1,2,2,"新建"); 8         newMenu.setCheckable(true); 9         MenuItem openMenu=filesubmenu.add(2,3,3,"打开");10         filesubmenu.setGroupCheckable(2, true, true);11             return super.onCreateOptionsMenu(menu);12     }
子菜单

上下文菜单可以和任意的view关联,而且它必须关联一个view,例如button、textview等。

 1 public void onCreateContextMenu(ContextMenu menu,View view,ContextMenuInfo menuInof) 2      3     { 4         super.onCreateContextMenu(menu, view, menuInof); 5         menu.add("上下文菜单"); 6         menu.add(0,ITEM1,Menu.NONE,"放大").setCheckable(true).setChecked(true); 7         menu.add(20,ITEM2,Menu.NONE,"缩小"); 8         menu.add(20,ITEM3,Menu.NONE,"平移"); 9         menu.setGroupCheckable(20, true, true);10         SubMenu sub=menu.addSubMenu(0,4,Menu.NONE,"子菜单");11         sub.add("子菜单1");12         sub.add("子菜单2");13     }
上下文菜单

上下文菜单中可以添加子菜单的。上下文菜单在添加中,需要注册。

Button button9=(Button)findViewById(R.id.button9);
registerForContextMenu(button9);

这里将定义的上下文菜单注册到button9中。

如果想实现对上下文菜单选择时间的监听,oncontextitemselected方法实现。

 1      public boolean onContextItemSelected(MenuItem item){        2             switch(item.getItemId()){ 3             case ITEM1: 4                 //在这里添加处理代码 5                 Toast.makeText(this, "点击了放大", 5000).show(); 6                 return true; 7             case ITEM2: 8                 //在这里添加处理代码 9                 Toast.makeText(this, "点击了缩小", 5000).show();10                 break;    11             case ITEM3:12                 //在这里添加处理代码13                 14                 break;15             }16             return true;17         }
上下文菜单事件

更多相关文章

  1. Android(安卓)之往通讯录中添加数据和查询数据
  2. android listview的一些设置
  3. 天天记录 - Android创建应用窗口分析2
  4. Android非Kotlin支持项目添加Kotlin代码时的注意点
  5. Android里面用XML定义菜单资源
  6. Android(安卓)菜单(OptionMenu)大全 建立你自己的菜单
  7. android 开发-文件存储之读写sdcard
  8. Android权限问题
  9. Android的Menu

随机推荐

  1. 深入浅出Android(安卓)Handler
  2. Android(安卓)之Sub Menu案例
  3. Android判断机器默认屏幕方向
  4. android常用包介绍
  5. Android(安卓)美化之Toolbar控件使用
  6. Android(安卓)HttpURLConnection及HttpCl
  7. Handler 消息传递机制介绍
  8. 2011.10.12(2)——— android Matrix学习01
  9. 安装Android(安卓)2.2 SDK时出现的问题
  10. Unity3D 调用Android原生方法2