Menu中添加子Menu

  Menu中添加子Menu有两种方法,一种就是直接在xml文件中添加,在<item>标签里面再添加<Menu>标签.另一种就是在代码中进行动态编写.
  以下代码是在上一篇博客中进行修改的,连接地址:http://www.cnblogs.com/hanyuan/archive/2012/04/09/Andorid%E4%B8%AD%E7%9A%84Menu.html

  其中Options Menu中的子Menu是在xml文件中进行添加的,而Context Menu中的子Menu是在代码中进行添加的,其实两种都可以,只是为了方便说明,省点时间而已。

mymenu.xml:

<menu xmlns:android="http://schemas.android.com/apk/res/android" >

    <item
        android:id="@+id/about"
        android:icon="@drawable/about"
        android:title="关于">
        <menu>
            <group
                android:checkableBehavior="single"
                >
                <item
                    android:id="@+id/factory"
                    android:title="商家"/>
                <item
                    android:id="@+id/price"
                    android:title="价格"/>
            </group>
        </menu>
    </item>
    <item
        android:id="@+id/exit"
        android:icon="@drawable/exit"
        android:title="退出"/>

</menu>

其中group中的android:checkableBehavior属性可以是sigle,all或者none.如果是single,那个在这个group里面的所有Item里只能选择一个,如果是all则任意选择,如果是none则不能进行选择。

在代码中添加子Menu:

@Override
    public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo)
    {
        super.onCreateContextMenu(menu, v, menuInfo);
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.contextmenu, menu);
        
        menu.addSubMenu("指导老师").add("李青龙");
    }

addSubMenu()方法返回的是SubMenu对象,可以进行子菜单的添加,这里直接采用链式编写。

Android中group中的Item默认情况下选择的时候是不会发生变化的。如果要发生状态的改变,要在onOptionsMenuItemSelected()方法中进行控制,代码如下:

@Override
    public boolean onOptionsItemSelected(MenuItem item)
    {
        int itemId = item.getItemId();
        switch (itemId)
        {
        case R.id.about:
            Toast.makeText(this, "这是个OptionsMenu测试", Toast.LENGTH_LONG).show();
            return true;
        case R.id.exit:
            finish();
            return true;
        case R.id.factory:
            if(!item.isChecked())
                item.setChecked(true);
        case R.id.price:
            if(!item.isChecked())
                item.setChecked(true);
        }
        return super.onOptionsItemSelected(item);
    }

程序运行结果:
Context Menu:              点击指导老师进入子菜单:                                            

              

 可进行选择的子Menu菜单               点击关于后进入菜单

                  

                                                        

原文地址:https://www.cnblogs.com/hanyuan/p/Android_Menu_SubMenu.html