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>

 

效果圖:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM