2025-03-25

創建一個選項菜單的步驟:

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
 

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *