Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android應用開發學習筆記之菜單

Android應用開發學習筆記之菜單

編輯:關於Android編程

Android中的菜單分為選項菜單(OptionMenu)和上下文菜單(Context Menu)。通常使用菜單資源文件創建菜單。菜單資源文件通常放置在res\menu目錄下,這個目錄默認情況下是不存在的,需要我們自己創建該目錄。菜單資源的根元素通常是<menu></menu>標記,在該標記中可以包含兩種子元素:

1、<item></item>標記,用於定義菜單項。如果某個菜單項中還包括子菜單,可以通過在該菜單項中再包含<menu></menu>標記來實現。

2、<group></group>標記,用於將多個<item></item>標記定義的菜單包裝成一個菜單組。

 

一、菜單的創建步驟

1、  選項菜單

當用戶單擊菜單按鈕時,彈出的菜單就是選項菜單,創建選項菜單的步驟如下:

(1)      重寫Activity的onCreateOptionsMenu()方法。在該方法中,首先創建一個用於解析菜單資源文件的MenuInflater對象,然後調用該對象的inflate()方法解析一個菜單資源文件,並把解析後的菜單保存在menu中。關鍵代碼如下:


[java]
@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    MenuInflater inflater=new MenuInflater(this);       //實例化一個MenuInflater對象  
    inflater.inflate(R.menu.optionmenu, menu);          //解析菜單文件  
    return true; 

@Override
public boolean onCreateOptionsMenu(Menu menu) {
 MenuInflater inflater=new MenuInflater(this);  //實例化一個MenuInflater對象
 inflater.inflate(R.menu.optionmenu, menu);   //解析菜單文件
 return true;
}

 

(2)      重寫onOptionsItemSelected()方法,用於當菜單被選擇時,做出相應處理。關鍵代碼舉例如下:


[java]
// Called when an options item is clicked  
    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
        switch (item.getItemId()) { 
                case R.id.menu_setting: 
                        Log.d(TAG, "menu item setting is selected."); 
                        startActivity(new Intent(this, Settings.class)); 
                        break; 
                case R.id.menu_history: 
                        Log.d(TAG, "menu item history is selected."); 
                        startActivity(new Intent(this, History.class)); 
                        break; 
                case R.id.menu_about: 
                        Log.d(TAG, "menu item about is selected."); 
                        break; 
        } 
        return true; 

// Called when an options item is clicked
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
                case R.id.menu_setting:
                        Log.d(TAG, "menu item setting is selected.");
                        startActivity(new Intent(this, Settings.class));
                        break;
                case R.id.menu_history:
                        Log.d(TAG, "menu item history is selected.");
                        startActivity(new Intent(this, History.class));
                        break;
                case R.id.menu_about:
                        Log.d(TAG, "menu item about is selected.");
                        break;
        }
        return true;
}

 

 

2、  上下文菜單

當用戶在某個控件上長時間按住不放,這時彈出的菜單就是上下文菜單。創建上下文菜單的步驟如下:

(1)、在Activity的onCreate()方法中注冊上下文菜單,例如,為文本框組件注冊上下文菜單(也就是說在按住該文本框時,才顯示上下文菜單),可以使用下面的代碼,:


[java]
TextView tv = (TextView)findViewById(R.id.textView); 
registerForContextMenu(tv); 

TextView tv = (TextView)findViewById(R.id.textView);
registerForContextMenu(tv);

 

(2)、重寫Activity的onCreateContextMenu()方法,在該方法中,首先創建一個用於解析菜單資源的MenuInflater對象,然後調用該對象的inflate()方法解析菜單資源文件,並把解析後的菜單保存在menu中,最後為菜單頭設置圖標和標題。關鍵代碼如下:


[java]
@Override 
public void onCreateContextMenu(ContextMenu menu, View v, 
        ContextMenuInfo menuInfo) { 
    MenuInflater inflator=new MenuInflater(this);   //實例化一個MenuInflater對象  
    inflator.inflate(R.menu.contextmenu, menu);     //解析菜單文件  
    menu.setHeaderIcon(R.drawable.ic_launcher);     //為菜單頭設置圖標  
    menu.setHeaderTitle("選擇顏色:");           //為菜單頭設置標題  
 

 @Override
 public void onCreateContextMenu(ContextMenu menu, View v,
   ContextMenuInfo menuInfo) {
  MenuInflater inflator=new MenuInflater(this);  //實例化一個MenuInflater對象
  inflator.inflate(R.menu.contextmenu, menu);  //解析菜單文件
  menu.setHeaderIcon(R.drawable.ic_launcher);  //為菜單頭設置圖標
  menu.setHeaderTitle("選擇顏色:");   //為菜單頭設置標題

 }

 

(3)、重寫onContextItemSelected()方法,用於當菜單被選擇時,做出相應處理。關鍵代碼如下:

 

[java]
@Override 
public boolean onContextItemSelected(MenuItem item) { 
    switch(item.getItemId()){ 
        case R.id.color1:       //當選擇紅顏色時  
            tv.setTextColor(Color.rgb(255, 0, 0)); 
            break; 
        case R.id.color2:       //當選擇綠顏色時  
            tv.setTextColor(Color.rgb(0, 255, 0)); 
            break; 
        default: 
            tv.setTextColor(Color.rgb(255, 255, 255)); 
    } 
    return true; 

 @Override
 public boolean onContextItemSelected(MenuItem item) {
  switch(item.getItemId()){
   case R.id.color1:  //當選擇紅顏色時
    tv.setTextColor(Color.rgb(255, 0, 0));
    break;
   case R.id.color2:  //當選擇綠顏色時
    tv.setTextColor(Color.rgb(0, 255, 0));
    break;
   default:
    tv.setTextColor(Color.rgb(255, 255, 255));
  }
  return true;
 }

 

 

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved