1. 程式人生 > >Android 基礎知識(Menu)

Android 基礎知識(Menu)

1。介紹:

從官方文件瞭解到,從Android3.0(API level 11)開始,Android裝置不再要求提供一個專門的選單按鈕,轉而推薦使用ActionBar。所以現在市面上很多新裝置使用三個虛擬按鍵,並不再額外提供選單按鈕。

因為Android版本的發展,對於選單的支援各個版本有很大的區別,而Android3.0是個分水嶺,大概可以分為下面三類:

  • OptionMenu和ActionBar:一些操作的集合,如果開發的平臺在Android3.0之上,推薦使用ActionBar,如果開發的平臺在Android2.3或之下,還是可以使用OptionMenu的。

  • ContextMenu和ActionMode:ContextMenu是一個浮動的視窗形式展現一個選項列表,ActionMode是一個顯示在螢幕頂部的操作欄,允許使用者選擇多個選項,ActionMode在Android3.0之後才有支援。

  • Popup Menu:PopupMenu是固定在View上的模態選單,以彈出的方式顯示,在Android3.0之後才有支援。

 

2,XML檔案注入使用:

【1】建立menu 檔案,建立XML檔案

【2】XML檔案

<menu xmlns:android="http://schemas.android.com/apk/res/android" >



    <item

        android:id="@+id/action_settings1"

        android:orderInCategory="1"

        android:title="aaa"/>

    

    <item

        android:id="@+id/action_settings2"

        android:orderInCategory="2"

        android:title="bbbb"/>



</menu>



【3】重寫Activity 中onCreateOptionsMenu 載入選單

public boolean onCreateOptionsMenu(Menu menu) {

        getMenuInflater().inflate(R.menu.main, menu);

}

【4】重寫Activity 中onOptionsItemSelected  

@Override

    public boolean onOptionsItemSelected(MenuItem item) {

        switch (item.getItemId()) {

            case R.id.action1:

                Log.e("Main", "AAAAAAAAAAAAAAAAAA");

                break;

            case  R.id.action2:

                Log.e("Main", "BBBBBBBBBBBB");

                break;

        }

        return super.onOptionsItemSelected(item);

    }

3,程式碼注入:

【1】onCreateOptionsMenu 建立控制元件

//當點選手機上的menu選單執行

    @Override

    public boolean onCreateOptionsMenu(Menu menu) {

//        getMenuInflater().inflate(R.menu.main, menu);

        

        //通過程式碼的方式新增

        menu.add(0, 1, 0, "前進");

        menu.add(0, 2, 0, "後退");

        menu.add(0, 3, 0, "首頁");

        

        return true;

    }

【2】onOptionsItemSelected   //當想要知道具體選單的哪個條目被選中  需要重寫下面這個方法

    

   @Override

    public boolean onOptionsItemSelected(MenuItem item) {

        switch (item.getItemId()) {

        case 1:

            System.out.println("111");

            break;

        case 2:

            System.out.println("2222");

            break;

            

        case 3:

            System.out.println("33333");

            break;

        }

        return super.onOptionsItemSelected(item);

    }

【3】onMenuOpened  //當用戶開啟選單的面板 這個方法就會執行


    @Override

    public boolean onMenuOpened(int featureId, Menu menu) {

        //[1]建立對話方塊

        AlertDialog.Builder builder = new Builder(this);

        builder.setTitle("警告");

        builder.setMessage("測試");

        builder.setPositiveButton("確定", new OnClickListener() {

            

            @Override

            public void onClick(DialogInterface dialog, int which) {

                

            }

        });

        

        builder.setNegativeButton("取消", new OnClickListener() {

            

            @Override

            public void onClick(DialogInterface dialog, int which) {

                

            }

        });

        //[2]彈出對話方塊

        builder.show();

        

        //不要系統的樣式

        return false;

    }