安卓的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);
    }

 

posted on 2016-07-21 19:55  JsAko飞得更远  阅读(786)  评论(0)    收藏  举报

导航