zoukankan      html  css  js  c++  java
  • 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菜单               点击关于后进入菜单

                      

                                                            

  • 相关阅读:
    js(四) 全选/全不选和反选
    js(三) ajax异步局部刷新技术底层代码实现
    js(二) 实现省市联动(json)
    接口
    内部类
    封装
    Static关键字
    this关键字
    带参数的方法
    abstract关键字
  • 原文地址:https://www.cnblogs.com/hanyuan/p/Android_Menu_SubMenu.html
Copyright © 2011-2022 走看看