Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 關於android開發 >> Android學習指南之十六:Android菜單詳解

Android學習指南之十六:Android菜單詳解

編輯:關於android開發

       Android用戶界面的組成除了View外,還包括菜單和對話框,本節我們先來學習一下菜單的使用方法。

       菜單Menu是Android用戶界面中最常見的元素之一,使用非常頻繁。Android菜單主要分為三類:選項菜單(Options Menu)、上下文菜單(Context Menu)、子菜單(Submenu)。

       一、選項菜單和子菜單

       一個Menu對象代表一個菜單,Menu中可添加菜單項MenuItem,也可以添加子菜單SubMenu。

Java代碼
  1. @Override      
  2. public void onCreate(Bundle savedInstanceState) {      
  3.      super.onCreate(savedInstanceState);      
  4.      setContentView(R.layout.main);      
  5. }      
  6.      
  7. @Override      
  8. public boolean onCreateOptionsMenu(Menu menu) {      
  9.     // TODO Auto-generated method stub      
  10.     //添加性別子菜單      
  11.     SubMenu subMenuGender=menu.addSubMenu(MAIN_GROUP, MENU_GENDER, 0,"性別");      
  12.    subMenuGender.setIcon(R.drawable.gender);      
  13.    subMenuGender.setHeaderIcon(R.drawable.gender);      
  14.    male=subMenuGender.add(GENDER_GROUP,MENU_GENDER_MALE, 0, "男");//為子菜單添加選項      
  15.    male.setChecked(true);//設置默認選項      
  16.    subMenuGender.add(GENDER_GROUP,MENU_GENDER_FEMALE, 0, "女");//為子菜單添加選項      
  17.    subMenuGender.setGroupCheckable(GENDER_GROUP, true, true);//設置GENDER_GROUP組是可選的、互斥的      
  18.               
  19.    //添加興趣子菜單      
  20.    SubMenu subMenuHobby=menu.addSubMenu(MAIN_GROUP, MENU_HOBBY, 1, "愛好");      
  21.    subMenuHobby.setIcon(R.drawable.hobby);      
  22.    miaHobby[0]=subMenuHobby.add(HOBBY_GROUP, MENU_HOBBY1, 0, "游泳");      
  23.    miaHobby[1]=subMenuHobby.add(HOBBY_GROUP, MENU_HOBBY2, 1, "籃球");      
  24.    miaHobby[2]=subMenuHobby.add(HOBBY_GROUP, MENU_HOBBY3, 2, "跑步");      
  25.    miaHobby[0].setCheckable(true);      
  26.    miaHobby[1].setCheckable(true);      
  27.    miaHobby[2].setCheckable(true);//設置為可多選      
  28.               
  29.    MenuItem ok=menu.add(MAIN_GROUP, MENU_OK, 3, "確定");//為主菜單添加選項菜單      
  30.    OnMenuItemClickListener lsn=new OnMenuItemClickListener() {      
  31.                   
  32.         @Override      
  33.         public boolean onMenuItemClick(MenuItem item) {      
  34.             // TODO Auto-generated method stub      
  35.             appendStateStr();      
  36.             return true;      
  37.         }      
  38.     };      
  39.     ok.setOnMenuItemClickListener(lsn);      
  40.     ok.setAlphabeticShortcut('o');//給確定菜單設置字符快捷鍵      
  41.      return true;      
  42. }      
  43.      
  44. @Override      
  45. public boolean onOptionsItemSelected(MenuItem item) {      
  46.     // TODO Auto-generated method stub      
  47.     switch(item.getItemId()){      
  48.     case MENU_GENDER_MALE:      
  49.     case MENU_GENDER_FEMALE:      
  50.         item.setChecked(true);      
  51.         appendStateStr();      
  52.         break;      
  53.     case MENU_HOBBY1:      
  54.     case MENU_HOBBY2:      
  55.     case MENU_HOBBY3:      
  56.         item.setChecked(!item.isChecked());      
  57.         appendStateStr();      
  58.         break;      
  59.     }      
  60.     return true;      
  61. }      
  62.      
  63. private void appendStateStr() {      
  64.     // TODO Auto-generated method stub      
  65.     String result="您選擇的性別是:";      
  66.     if(male.isChecked()){      
  67.         result+="男";      
  68.     }else{      
  69.         result+="女";      
  70.     }      
  71.     String hobbyStr="";      
  72.     for(MenuItem mi:miaHobby){      
  73.         if(mi.isChecked()){      
  74.             hobbyStr+=mi.getTitle()+"、";      
  75.         }      
  76.     }      
  77.     if(hobbyStr.length()>0){      
  78.         result+=",您的愛好為:"+hobbyStr.substring(0,hobbyStr.length()-1)+".\n";      
  79.     }else{      
  80.         resultresult=result+".\n";      
  81.     }      
  82.     Toast.makeText(mainActivity.this, result, Toast.LENGTH_LONG).show();      
  83. }    

       下面是此程序運行的結果,大家可以對照著代碼觀察效果:

Android選項菜單Options Menu

Android子菜單Submenu

Android子菜單Submenu

Android菜單操作結果

       二、上下文菜單

       上下文菜單是注冊到某個View對象上的,如果一個View對象注冊了上下文菜單,用戶可通過長按該View對象彈出上下文菜單.

       首先在onCreateContextMenu中為不同空間配置不同的上下文菜單:

Java代碼
  1. @Override  
  2. public void onCreateContextMenu(ContextMenu menu, View v,   
  3.         ContextMenuInfo menuInfo) {   
  4.     // TODO Auto-generated method stub   
  5.     super.onCreateContextMenu(menu, v, menuInfo);   
  6.     menu.setHeaderIcon(R.drawable.bird);   
  7.     if(v==findViewById(R.id.editview01)){   
  8.         menu.add(0,1,0,"菜單項1");   
  9.         menu.add(0,2,0,"菜單項2");   
  10.         menu.add(0,3,0,"菜單項3");   
  11.     }else if(v==findViewById(R.id.editview02)){   
  12.         menu.add(0,4,0,"菜單項4");   
  13.         menu.add(0,5,0,"菜單項5");   
  14.     }   
  15. }  

       在onCreate方法中為兩個文本框注冊上下文菜單:

Java代碼
  1. @Override  
  2. public void onCreate(Bundle savedInstanceState) {   
  3.     super.onCreate(savedInstanceState);   
  4.     setContentView(R.layout.main);   
  5.     this.registerForContextMenu(findViewById(R.id.editview01));   
  6.     this.registerForContextMenu(findViewById(R.id.editview02));   
  7. }

       添加上下文菜單監聽事件:

Java代碼
  1. @Override  
  2. public boolean onContextItemSelected(MenuItem item) {   
  3.     // TODO Auto-generated method stub   
  4.     switch(item.getItemId()){   
  5.     case 1:   
  6.     case 2:   
  7.     case 3:   
  8.         Toast.makeText(mainActivity.this, "這是第一個EditView的上下文菜單"+item.getTitle(), Toast.LENGTH_LONG).show();   
  9.     case 4:   
  10.     case 5:   
  11.         Toast.makeText(mainActivity.this, "這是第二個EditView的上下文菜單"+item.getTitle(), Toast.LENGTH_LONG).show();   
  12.                
  13.     }   
  14.     return super.onContextItemSelected(item);   
  15. }  

      下面兩圖是Android上下文菜單實例的運行效果:

 Android上下文菜單Context Menu

Android上下文菜單操作結果

       通過三種Android菜單的詳細講解,大家應該對菜單的使用有所了解了,在以後的Android開發過程中可以多熟悉下。

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