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>

效果图:

原文地址:https://www.cnblogs.com/android-deli/p/10176596.html