[Android] 在Activity中加入選單(Menu)
Menu是Android Application特有的功能,當User按下Menu Button後,它會出現在程式的正下方,以提供其它額外系統動作。
程式碼說明:
1. 建立Menu XML描述檔案
在Resource資料夾中新增Menu資料夾,並加入XML描述檔,它包含了以下元素:
(1) menu:定義一個Menu物件,為xml的root node
(2) item:代表Menu中的選項,可以藉由設定其icon、title屬性改變選項外觀
雖然Menu可透過程式動態產生,但建議還是以外部xml檔案定義的方式建立,這對於程式維護以及了解選單結構比較有益。
<?xml version="1.0" encoding="UTF-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android" >" <item android:id="@+id/add" android:icon="@drawable/add" android:title="新增" /> <item android:id="@+id/buy" android:icon="@drawable/buy" android:title="購買" /> </menu>
2. 覆寫onCreateOptionsMenu建立Menu Object
onCreateOptionsMenu(Menu menu)會在Activity第一次建立Menu(使用者按下Menu鈕)時被呼叫,因此必須透過MenuInflater將xml檔案實體化Menu物件。
/**將xml透過MenuInflater轉換為Menu object instance*/ @Override public boolean onCreateOptionsMenu(Menu menu){ MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.option_menu, menu); return true; }
3. 覆寫onOptionsItemSelected定義Menu選項對應的動作
當User選擇Menu的任一選項時,會呼叫Activity的onOptionsItemSelected()並傳入被選擇的MenuItem,可以簡單透過switch case以item id作相對應動作的對應,在本例將以Toast message顯示所選擇的option。
@Override public boolean onOptionsItemSelected(MenuItem item) { // 針對 item selection id 進行動作處理 switch (item.getItemId()) { case R.id.add: Toast.makeText(this, "Add action", Toast.LENGTH_SHORT).show(); return true; case R.id.buy: Toast.makeText(this, "Buy action", Toast.LENGTH_SHORT).show(); return true; default: return super.onOptionsItemSelected(item); } }
留言
張貼留言