安卓的OptionMenu和ContextMenu的使用
今天来讲讲安卓系统的两种菜单OptionMenu和ContextMenu的使用
首先我们来探讨下OptionMenu的使用
1.OptionMenu是如何触发的呢?
用户通过按Menu键可以出发OptionMenu。
2.如何向OptionMenu添加MenuItem?
添加MenuItem有两种方法:
第一种是通过纯编码的方法:
首先OptionMenu的创建会回调onCreateOptionsMenu(Menu menu)的方法,我们可以在这个方法中取得Menu对象,再调用Menu.add(int groupId, int itemId,int order,String title)方法来添加MenuItem
在这对add方法的四个参数做下解释,groupId用于分组的一般填,itemId是用来标识MenuItem的id,order是用来比较MenuItem先后显示顺序的,order较小的显示在左边,title是每个MenuItem上文本的显示
第二种是通过加载menu文件的方法:
首先在res目录下创建一个menu的文件夹,在此文件夹下创建一个以<menu></menu>为根节点的xml文件,再添加<item>的子节点
item子节点上有三个属性值得关注android:id="@+id/delete"(用来标识MenuItem的id),android:orderInCategory="3"(用来比较MenuItem先后显示顺序的),android:title="删除1"(每个MenuItem上文本的显示)
然后通过MenuInflater.inflate(int menuId, Menu menu)的方法来加载menu文件,从而添加MenuItem
3.选择某个MenuItem时如何响应?
当用户点击某个MenuItem的时候,会回调onOptionsItemSelected(MenuItem item)的方法,通过item.getItemId()可以识别当前点击的是哪个item
下面给出代码:
// 当菜单创建回调的方法 @Override public boolean onCreateOptionsMenu(Menu menu) { /** * 第一种方法添加菜单项(MenuItem): 纯编码的方式 */ menu.add(0, 0,0,"添加"); menu.add(0,1,0,"删除"); /** * 第二种方法添加菜单项(MenuItem): 利用MenuInflater加载menu文件 */ // MenuInflater inflater = getMenuInflater(); // inflater.inflate(R.menu.option_item, menu); return super.onCreateOptionsMenu(menu); } // 当菜单项被点击的时候回调的方法(响应方法) @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case 0: Toast.makeText(this, "添加", 0).show(); break; case 1: Toast.makeText(this, "删除", 0).show(); break; } return super.onOptionsItemSelected(item); }
menu文件option_item.xml如下:
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android" > <item android:id="@+id/add" android:orderInCategory="2" android:title="添加1"/> <item android:id="@+id/delete" android:orderInCategory="3" android:title="删除1"/> </menu>
接着我们来探讨下ContextMenu的使用:
1.ContextMenu是如何触发的呢?
ContextMenu跟OptionMenu有所不同,它是通过长按某个视图所触发的,要在视图上设置一个OnCreateContextMenuListener的监听器,而Activity实现过这个接口。
2.如何向ContextMenu添加MenuItem?
首先ContextMenu的创建会回调onCreateContextMenu(Menu menu)的方法,所以要在Activity类中重写这个方法,其它步骤跟OptionMenu一致
3.选择某个MenuItem时如何响应?
当用户点击某个MenuItem的时候,会回调onContextItemSelected(MenuItem item)的方法,通过item.getItemId()可以识别当前点击的是哪个item
下面给出代码:
//当上下文菜单被创建的时候回调的方法 @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { super.onCreateContextMenu(menu, v, menuInfo); menu.add(0, 1, 0, "添加"); menu.add(0, 2, 0, "删除"); } //当上下文菜单项被点击的时候回调的方法 @Override public boolean onContextItemSelected(MenuItem item) { switch(item.getItemId()){ case 1: Toast.makeText(this, "添加", 0).show(); break; case 2: Toast.makeText(this, "删除", 0).show(); break; } return super.onContextItemSelected(item); }
浙公网安备 33010602011771号