創建一個選項菜單的步驟:
1、覆蓋Activity的onCreateOptionsMenu(Menu menu)函數
2、調用menu的add()方法添加菜單項(MenuItem),可以調用MenuItem的setIcon()方法來為菜單設置圖標
3、當菜單項()被選擇時,我們可以通過覆蓋Activity的onOptionsItemSeleted()方法來響應事件
下面先來看下onCreateOptionsMenu()函數
public boolean onCreateOptionsMenu (Menu menu)
函數返回值:佈爾值,表示是否顯示該函數中設置的菜單
參數:Menu對象
onCreateOptionsMenu函數僅在第一次使用菜單時被調用一次。在這個函數我們可以通過Menu對象的add()方法添加菜單子項,這個函數有四個重載函數,下面分別介紹:
public abstract MenuItem add (CharSequence title)
參數說明:指定菜單上的顯示文字
public boolean onCreateOptionsMenu(Menu menu) {
menu.add("一個參數的add方法的菜單");
menu.add("一個參數的add方法的菜單2");
return true;
}
註意:這種方式添加的按鈕是默認的垂直方式排列:
效果如圖1:
public abstract MenuItem add (int groupId, int itemId, int order, int titleRes)
參數說明:
groudId:是指組ID,用以批量地對菜單子項進行處理和排序
itemId:是子項ID,是每一個菜單子項的唯一標識
order:指定菜單子項在選項菜單中的排列順序
titlerRes: 菜單標題的引用
public abstract MenuItem add (int titleRes)
參數說明:titlerRes: 菜單標題的引用通過string.xml中添加
<string name="titileRes">TitleRes</string>
public boolean onCreateOptionsMenu(Menu menu) {
menu.add(R.string.titileRes);
return true;
}
效果:
public abstract MenuItem add (int groupId, int itemId, int order, CharSequence title)
這個是最常用的方法
參數說明:
groudId:是指組ID,用以批量地對菜單子項進行處理和排序
itemId:是子項ID,是每一個菜單子項的唯一標識
order:指定菜單子項在選項菜單中的排列順序
titler: 菜單標題
public boolean onCreateOptionsMenu(Menu menu) {
menu.add(0, ITEM, 0, "開始");
menu.add(0, ITME2, 0, "退出");
return true;
}
效果:
為菜單添加響應事件
覆蓋onOptionsItemSelected(MenuItem menuItem)函數
// 通過點擊瞭哪個菜單子項來改變Activity的標題
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case ITEM:
setTitle("單擊瞭菜單子項1");
break;
case ITME2:
setTitle("單擊瞭菜單子項2");
break;
}
return true;
}
綜合實例:
package com.jiahui.activity;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
public class MenuDemoActivity extends Activity {
private static final int ITEM = Menu.FIRST;
private static final int ITME2 = Menu.FIRST + 1;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
public boolean onCreateOptionsMenu(Menu menu) {
menu.add(0, ITEM, 0, "下載").setIcon(R.drawable.download);//設置圖標
menu.add(0, ITME2, 0, "上傳").setIcon(R.drawable.upload);
return true;
}
// 通過點擊瞭哪個菜單子項來改變Activity的標題
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case ITEM:
setTitle("單擊瞭菜單子項1");
break;
case ITME2:
setTitle("單擊瞭菜單子項2");
break;
}
return true;
}
}
效果:
源代碼:http://up.aiwalls.com/2011/1014/20111014011529629.rar