選單元件提供使用者在應用程式方便選擇項目,屬於常用的元件之一,Options Menu就是透過按手機的menu鑑顯示的功能表,最多可以顯示六項,稱為Icon Menu,超過六項就會以more的功能項來表示其餘的選項,此稱為Expanded Menu ,當功能表第一次被打開時,系統會呼叫onCreateOptionsMenu(),用該方法產生並傳遞給應用程式功能表對象。可以把這些功能表定義在xml或是在java中呼叫add()方法來產生功能表

小試身手小範例:

本範例中,先將每個MenuItemItemID設定好,並用整數儲存,接著使用onCreateOptionsMenu()建立功能表項目,其中itemID是用來識別MenuItem的唯一整數。

OptionMenu.java

import android.app.Activity;

import android.app.AlertDialog;

import android.content.DialogInterface;

import android.os.Bundle;

import android.view.Menu;

import android.view.MenuItem;

publicclass OptionMenu extends Activity {

    //設定功能表項目ID

    publicstaticfinalintaboutBtnId = Menu.FIRST;

    publicstaticfinalintexitBtnId = Menu.FIRST+1;

    /** Called when the activity is first created. */   

    @Override

    publicvoid onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

    }

    //建立功能表項目

    publicboolean onCreateOptionsMenu(Menu menu){

    //使用menu.add方法,參數分別為(GroupIDMenuID、順序、顯示字串)

    menu.add(0, aboutBtnId, 0, "about");   

    menu.add(0, exitBtnId, 0, "exit");

        return true;

    }

    //處理被選擇的功能表項目

    publicboolean onOptionsItemSelected(MenuItem item){

    super.onOptionsItemSelected(item);

    //使用MenuItem中的getItemId()方法來取得目前被選取的項目,進行適當的處理事件

    switch(item.getItemId()){

    caseaboutBtnId:

         openDialog();

         break;

    caseexitBtnId:

         finish();

         break;

    }

        returntrue;

    }

    privatevoid openDialog() {

        // TODO Auto-generated method stub

        //警告視窗

        AlertDialog.Builder builder = new AlertDialog.Builder(this);

        builder.setTitle("About").setMessage("About OptionsMenu");   

        builder.setPositiveButton("ok", new DialogInterface.OnClickListener() {

            @Override

            publicvoid onClick(DialogInterface dialog, int which) {

                // TODO Auto-generated method stub

                dialog.cancel();

            }

        }).show();

    }

}

main.xml

<?xml version="1.0" encoding="utf-8"?>

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

    android:orientation="vertical"

    android:layout_width="fill_parent"

    android:layout_height="fill_parent"

    >

<TextView 

    android:layout_width="fill_parent"

    android:layout_height="wrap_content"

    android:text="Please push the menu button!"

    android:textSize="20sp"

    />

</LinearLayout>

OptionMenu01.jpg 

按下about按鍵後

OptionMenu02.jpg  

小試身手小範例二:

在範例二中加入超過六個的項目至Menu中,可以發現一個畫面最多只能放六個項目,超過的時候在第六個item上會有一個按鈕為more,點選之後就可以選到其他的MenuItem

OptionMenu.java

import android.app.Activity;

import android.app.AlertDialog;

import android.content.DialogInterface;

import android.os.Bundle;

import android.view.Menu;

import android.view.MenuItem;

publicclass OptionMenu extends Activity {

    //設定功能表項目ID

    publicstaticfinalintaboutBtnId = Menu.FIRST;

    publicstaticfinalintexitBtnId = Menu.FIRST+1;

    publicstaticfinalintsearchBtnId = Menu.FIRST+2;

    publicstaticfinalintaddBtnId = Menu.FIRST+3;

    publicstaticfinalintremoveBtnId = Menu.FIRST+4;

    publicstaticfinalintplayBtnId = Menu.FIRST+5;

    publicstaticfinalintopenBtnId = Menu.FIRST+6;

    publicstaticfinalintstopBtnId = Menu.FIRST+7;

    /** Called when the activity is first created. */   

    @Override

    publicvoid onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

    }

    //建立功能表項目

    publicboolean onCreateOptionsMenu(Menu menu){

    //使用menu.add方法,參數分別為(GroupIDMenuID、順序、顯示字串)

    menu.add(0, aboutBtnId, 0, "about");   

    menu.add(0, exitBtnId, 0, "exit");

    menu.add(0, searchBtnId, 0, "search");

    menu.add(0, addBtnId, 0, "add");

    menu.add(0, removeBtnId, 0, "remove");

    menu.add(0, playBtnId, 0, "play");

    menu.add(0, openBtnId, 0, "open");

    menu.add(0, stopBtnId, 0, "stop");

        returntrue;

    }

    //處理被選擇的功能表項目

    publicboolean onOptionsItemSelected(MenuItem item){

    super.onOptionsItemSelected(item);

    //使用MenuItem中的getItemId()方法來取得目前被選取的項目

    switch(item.getItemId()){

    caseaboutBtnId:

         openDialog();

         break;

    caseexitBtnId:

         finish();

         break;

    }

        returntrue;

    }

    privatevoid openDialog() {

        // TODO Auto-generated method stub

        //警告視窗

        AlertDialog.Builder builder = new AlertDialog.Builder(this);

        builder.setTitle("About").setMessage("About OptionsMenu");

        builder.setPositiveButton("ok", new DialogInterface.OnClickListener() {  

            @Override

            publicvoid onClick(DialogInterface dialog, int which) {

                // TODO Auto-generated method stub

                dialog.cancel();

            }

        }).show();

    }

}

OptionMenu03.jpg  

按下More鑑後

OptionMenu04.jpg  

 

arrow
arrow
    文章標籤
    android OptionsMenu
    全站熱搜
    創作者介紹
    創作者 S 的頭像
    S

    S's Journal

    S 發表在 痞客邦 留言(0) 人氣()