Android三種菜單一實例分析_Android

來源:互聯網
上載者:User

本文執行個體講述了Android的三種菜單。分享給大家供大家參考。具體分析如下:

Android的菜單分為三種類型:選項菜單(Option Menu)、操作功能表(Context Menu)、子功能表(Sub Menu)

一.選項菜單

當使用者單擊裝置上的功能表按鈕(Menu),觸發事件彈出的菜單就是選項菜單。選項菜單最多隻有六個,超過六個第六個就會自動顯示 更多 選項來展示顯示。
建立方法:

1、覆蓋Activity的onCreateOptionsMenu(Menu menu)方法,當我們第一次開啟菜單時調用。
2、調用Menu的add()方法添加功能表項目(MenuItem),可以調用MenuItem的setIcon()方法為功能表項目設定表徵圖。
3、當功能表項目(MenuItem)被選中時,覆蓋Acitivy的onOptionsMenuSelected()方法響應事件。

二、操作功能表

當使用者長按Activity頁面時,彈出的菜單我們稱為操作功能表。我們經常在Windows中用滑鼠右鍵單擊彈出的菜單就是操作功能表。

1、覆蓋Activity的onCreateContextMenu()方法,調用Menu的add方法添加功能表項目MenuItem
2、覆蓋onContextItemSelected()方法,響應菜單單擊事件
3、調用registerForContextMenu()方法,為視圖註冊操作功能表

三、子功能表

子功能表就是將相同功能的分組進行多級顯示的一種菜單,比如,Windows的[檔案] 功能表中就有“建立”,“開啟”,“關閉”等子功能表。

建立子功能表的方法

1、覆蓋Activity的onCreateOptionsMenu()方法,調用Menu的addSubMenu()方法添加子功能表項
2、調用SubMenu的add()飯飯,添加子功能表項
3、覆蓋onCreateItemSelected()方法,響應菜單單擊事件

public class Main extends Activity { // 功能表項目ID // FIRST為Menu類中的整形常量 private static final int ITEM1 = Menu.FIRST; private static final int ITEM2 = Menu.FIRST + 1; private static final int ITEM3 = Menu.FIRST + 2; private static final int ITEM4 = Menu.FIRST + 3; private static final int ITEM5 = Menu.FIRST + 4; private static final int ITEM6 = Menu.FIRST + 5; private static final int ITEM7 = Menu.FIRST + 6; TextView myTV;   @Override   public void onCreate(Bundle savedInstanceState) {     super.onCreate(savedInstanceState);     setContentView(R.layout.main);     myTV = (TextView) findViewById(R.id.myTV);     // 此時為myTv設定操作功能表,長按TextView時響應函數     registerForContextMenu(myTV);   } @Override // 點擊功能表按鈕響應的事件 public boolean onCreateOptionsMenu(Menu menu) {  /* 一下代碼為選項菜單測試   // 添加功能表項目 // public abstract MenuItemadd(int groupId, int itemId, int order, CharSequence title) // 菜單所在的group,菜單的ID,排列順序,顯示的文字 // add()方法返回一個MenuItem對象。而setIcon是MenuItem的方法 menu.add(0, ITEM1, 0, "開始").setIcon(R.drawable.ic_launcher); menu.add(0, ITEM2, 0, "開始1"); menu.add(1, ITEM3, 0, "開始2"); menu.add(1, ITEM4, 0, "開始3"); menu.add(1, ITEM5, 0, "開始4");// menu.add(0, ITEM6, 0, "開始5");// menu.add(0, ITEM7, 0, "開始6"); */  /**  * 以下代碼為添加子功能表的測試代碼  */  // 添加子功能表  SubMenu subFile = menu.addSubMenu("檔案");  SubMenu editFile = menu.addSubMenu("編輯");  // 為子功能表添加功能表項目  subFile.add(0, ITEM1, 0, "建立");  subFile.add(0, ITEM2, 0, "開啟");  return true; } @Override // 菜單被選中時觸發的事件 public boolean onOptionsItemSelected(MenuItem item) {  /* // 在此說明一下,Menu相當於一個容器,而MenuItem相當於容器中容納的東西 switch(item.getItemId()) { case ITEM1:  // 設定Activity的Title  setTitle("開始遊戲1");  break; case ITEM2:  setTitle("開始遊戲2");  break; case ITEM3:  setTitle("開始遊戲3");  break; case ITEM4:  setTitle("開始遊戲4");  break; case ITEM5:  setTitle("開始遊戲5");  break; case ITEM6:  setTitle("開始遊戲6");  break; case ITEM7:  setTitle("開始遊戲7");  break; } */  /**  * 子功能表項響應代碼  */  switch(item.getItemId()) {  case ITEM1:   // 設定Activity的Title   setTitle("建立檔案");   break;  case ITEM2:   setTitle("開啟檔案");   break;  }  return true; } @Override // 建立操作功能表 public void onCreateContextMenu(ContextMenu menu, View v,   ContextMenuInfo menuInfo) {  // 向操作功能表中添加功能表項目  // 注意此處的menu是ContextMenu  menu.add(0, ITEM1, 0, "紅色背景");  menu.add(0, ITEM2, 0, "綠色背景");  menu.add(1, ITEM3, 0, "白色背景"); } @Override public boolean onContextItemSelected(MenuItem item) {  switch(item.getItemId()) {  case ITEM1:   myTV.setBackgroundColor(Color.RED);   break;  case ITEM2:   myTV.setBackgroundColor(Color.GREEN);   break;  case ITEM3:   myTV.setBackgroundColor(Color.WHITE);   break;  }  return true; }}

希望本文所述對大家的Android程式設計有所協助。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.