• Android-普通菜单Menu


    第一种方式,使用Java方式 

    第二种方式,使用menu.xml

    package liudeli.activity;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.view.Menu;
    import android.view.MenuInflater;
    import android.view.MenuItem;
    import android.view.SubMenu;
    import android.widget.Toast;
    
    public class MenuActivity extends Activity {
    
        private static final int MENU_ITEM_CREATE = 0;
        private static final int MENU_ITEM_DELETE = 1;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
        }
    
        /**
         * 第一步:菜单选项
         * 创建菜单
         * @param menu
         * @return
         */
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            /************************* 第一种方式,使用Java方式 ****************************/
            /**
             * 参数一: 组号
             * 参数二: 唯一的ID号
             * 参数三: 排序号
             * 参数四: 标题
             */
            MenuItem menu_item_create = menu.add(0, MENU_ITEM_CREATE, 0, "新建");
    
            // 设置是否可点
            menu_item_create.setEnabled(true);
    
            // 设置图标,菜单有时候加载不出来,但是不会报错
            menu_item_create.setIcon(android.R.drawable.ic_menu_camera);
    
            /**
             * 参数一: 组号
             * 参数二: 唯一的ID号
             * 参数三: 排序号
             * 参数四: 标题
             */
            menu.add(0, MENU_ITEM_DELETE, 0, "删除");
    
            /**
             * 添加子菜单
             */
            SubMenu subMenu = menu.addSubMenu("子菜单");
            subMenu.add(0, 11, 0, "子菜单1");
            subMenu.add(0, 12, 0, "子菜单2");
    
    
            /************************* 第二种方式,使用menu.xml ****************************/
            // 菜单加载器
            MenuInflater menuInflater = getMenuInflater();
            menuInflater.inflate(R.menu.menu, menu);
    
    
            /************************* menu说明 ****************************/
    
            /*menu.add("菜单一"); // 添加菜单
            menu.add(1, Menu.FIRST, Menu.FIRST, "菜单二"); // 添加菜单 带组号...
            int group1 = 1;
            int group2 = 2;
            menu.add(group1, 1, 1, "item1");// 添加菜单 带组号...
            menu.add(group1, 2, 2, "item2");// 添加菜单 带组号...
            menu.add(group2, 3, 3, "item3");// 添加菜单 带组号...
            menu.add(group2, 4, 4, "item4");// 添加菜单 带组号...
    
            menu.removeGroup(group1);    //删除一个组
            menu.setGroupVisible(group1, false); //设置可见性
            menu.setGroupEnabled(group2, false); //设置是否可点
            menu.setGroupCheckable(group2, true, t); //设置一组菜单的勾选情况*/
    
            return super.onCreateOptionsMenu(menu);
        }
    
        /**
         * 第二步:菜单的响应
         * 处理menu的点击事件
         */
        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
            int id = item.getItemId();
    
            /**
             * 对应 第一种方式,使用Java方式
             */
            switch (id) {
                case MENU_ITEM_CREATE:
                    Toast.makeText(this, item.getTitle() + " , 创建", Toast.LENGTH_LONG).show();
                    break;
                case MENU_ITEM_DELETE:
                    Toast.makeText(this, item.getTitle() + " , 删除", Toast.LENGTH_LONG).show();
                    break;
                case 11:     // 上面代码 itemid定义是11
                    Toast.makeText(this, item.getTitle() + " , 第一个子菜单", Toast.LENGTH_LONG).show();
                    break;
                case 12:     // 上面代码 itemid定义是12
                    Toast.makeText(this, item.getTitle() + " , 第二个子菜单", Toast.LENGTH_LONG).show();
                    break;
                default:
                    break;
            }
            // item.getTitle() 获取上面代码设置的标题    item.getItemId() 获取上面代码设置的ItemId
            // Toast.makeText(this, item.getTitle() + " , " + item.getItemId(), Toast.LENGTH_LONG).show();
    
    
            /**
             * 对应 第二种方式,使用menu.xml
             */
            switch (id) {
                case R.id.menu_create:
                    Toast.makeText(this, item.getTitle() + " , menu.xml创建", Toast.LENGTH_LONG).show();
                    break;
                case R.id.menu_delete:
                    Toast.makeText(this, item.getTitle() + " , menu.xml删除", Toast.LENGTH_LONG).show();
                    break;
                case R.id.menu_sub1:
                    Toast.makeText(this, item.getTitle() + " , menu.xml子菜单一", Toast.LENGTH_LONG).show();
                    break;
                case R.id.menu_sub2:
                    Toast.makeText(this, item.getTitle() + " , menu.xml子菜单二", Toast.LENGTH_LONG).show();
                    break;
            }
            // item.getTitle() 获取上面代码设置的标题    item.getItemId() 获取上面代码设置的ItemId
            // Toast.makeText(this, item.getTitle() + " , " + item.getItemId(), Toast.LENGTH_LONG).show();
    
            return super.onOptionsItemSelected(item);
        }
    
    }

    menu.xml

    <?xml version="1.0" encoding="utf-8"?>
    <menu xmlns:android="http://schemas.android.com/apk/res/android" >
    
        <item
            android:id="@+id/menu_create"
            android:icon="@android:drawable/ic_menu_add"
            android:title="X新建">
        </item>
    
        <item
            android:id="@+id/menu_delete"
            android:icon="@android:drawable/ic_menu_add"
            android:title="X删除">
        </item>
    
        <item android:title="X子菜单">
    
            <menu>
    
                <item
                    android:id="@+id/menu_sub1"
                    android:icon="@android:drawable/ic_menu_add"
                    android:title="X子菜单1">
                </item>
    
                <item
                    android:id="@+id/menu_sub2"
                    android:icon="@android:drawable/ic_menu_add"
                    android:title="X子菜单2">
                </item>
    
            </menu>
    
        </item>
    
    </menu>

    效果图:

  • 相关阅读:
    java7-4 继承的练习
    java7-3 继承
    cocos2d-x之计时器初试
    cocos2d-x之物理按键初试
    cocos2d-x之加速度传感器初试
    cocos2d-x之多点触碰初试
    cocos2d-x之事件传递
    cocos2d-x之单点触碰初试
    cocos2d-x之value
    cocos2d-x之Vector与map
  • 原文地址:https://www.cnblogs.com/android-deli/p/10176596.html
Copyright © 2020-2023  润新知