• 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菜单               点击关于后进入菜单

                      

                                                            

  • 相关阅读:
    ES 使用小结
    TruncateATable 清除一张表
    js 排序,去重
    读高性能JavaScript编程 第四章 Conditionals
    读高性能JavaScript编程 第四章 Duff's Device
    c# AOP 文章地址
    String、StringBuffer与StringBuilder之间区别
    批处理命令
    C#中的is和as操作符
    c# 入门
  • 原文地址:https://www.cnblogs.com/hanyuan/p/Android_Menu_SubMenu.html
Copyright © 2020-2023  润新知