Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發實例 >> Android開發入門:Menu使用介紹

Android開發入門:Menu使用介紹

編輯:Android開發實例

Menu : 意之菜單。

在Android開發中,有三種菜單:

  1. OptionsMeun:  選項菜單
  2. ContextMenu: 上下文菜單
  3. SubMenu: 子菜單

OptionsMenu: 

按住Android手機的Menu鍵,就會顯示OptonsMenu,它有以下要點:

  1. "By default, every Activity supports an options menu of actions or options. You can add items to this menu and handle clicks on your additions." ,詳情請見:http://developer.android.com/reference/android/view/Menu.html
  2. 最多只顯示6個菜單項,如果超過6個,它會以“More”形式來調出;
  3. 支持Title與Icon,可以設置快捷鍵。
  4. 方法:
    1. Activity: onCreateOptionsMenu(Menu menu) : 創建option menu,方法需要傳入Menu 接口
    2. Activity:   onOptionsItemSelected(MenuItem item): 菜單項目被選擇事件,方法需要傳入MenuItem接口
    3. Activity:   onOptionsMenuClosed(Menu menu): 當菜單被關閉後,調用;
    4. Activity:   onPrepareOptionsMenu(Menu menu): 菜單顯示之前調用;如果要動態顯示菜單,可以寫在此方法中。
  5. 代碼:
  1. @Override 
  2.      public boolean onCreateOptionsMenu(Menu menu) {  
  3.          /**  
  4.           * 1. 如果不分組,就自定義為Menu.NONE 2. id: 這個很重要:onOptionsItemSelected(MenuItem  
  5.           * item) 根據id來判斷那個菜單被選中 3. 定義菜單的排列 3. 設置Title  
  6.           */ 
  7.          menu.add(Menu.NONE, 1, Menu.NONE, "Dialog");  
  8.          menu.add(Menu.NONE, 2, Menu.NONE, "Toast");  
  9.          menu.add(Menu.NONE, 3, Menu.NONE, "Dialog With List");  
  10.          menu.add(Menu.NONE, 4, Menu.NONE, "ViewGroup");  
  11.          menu.add(Menu.NONE, 5, Menu.NONE, "test2").setTitle("test");  
  12.          menu.add(Menu.NONE, 6, Menu.NONE, "test3").setIcon(  
  13.                  R.drawable.gallery_05);  
  14.    
  15.          return super.onCreateOptionsMenu(menu);  
  16.      }  
  17.    
  18.      @Override 
  19.      public boolean onOptionsItemSelected(MenuItem item) {  
  20.          switch (item.getItemId()) {  
  21.          case 1:  
  22.              createDialog();  
  23.              break;  
  24.    
  25.          case 2:  
  26.              Toast.makeText(MainActivity.this, "Hello World", Toast.LENGTH_SHORT)  
  27.                      .show();  
  28.              break;  
  29.    
  30.          case 3:  
  31.              createDialogWithList();  
  32.              break;  
  33.    
  34.          case 4:  
  35.              startActivity(ViewGroupActivity.class);  
  36.    
  37.          default:  
  38.              break;  
  39.          }  
  40.    
  41.          return super.onOptionsItemSelected(item);  
  42.      }  
  43.    
  44.      @Override 
  45.      public void onOptionsMenuClosed(Menu menu) {  
  46.          Toast.makeText(this, "OptionsMenu closed", Toast.LENGTH_SHORT).show();  
  47.      }  
  48.    
  49.      @Override 
  50.      public boolean onPrepareOptionsMenu(Menu menu) {  
  51.          Toast.makeText(this, "Prepare to show menu", Toast.LENGTH_SHORT).show();  
  52.          return true;  
  53.      }  

 ContextMenu:

  1. 要綁定一個View,任何View都可以,EG:Button,ListView; 並且要執行Long Click動作.
  2. 不支持快捷鍵之item icon.
  3. Activity: onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo):創建ContextMenu
  4. Activity: onContextItemSelected(MenuItem item): 處理選中的菜單
  5. Activity: registerForContextMenu(View view) : 通常在onCreate中調用
  1. <?xml version="1.0" encoding="utf-8"?> 
  2.  <menu xmlns:android="http://schemas.android.com/apk/res/android" > 
  3.      <item 
  4.          android:id="@+id/item1" 
  5.          android:checkable="true" 
  6.          android:checked="false" 
  7.          android:title="item1"/> 
  8.      <item 
  9.          android:id="@+id/item2" 
  10.          android:title="item2"/> 
  11.      <item 
  12.          android:id="@+id/item3" 
  13.          android:title="sub menu"> 
  14.          <menu> 
  15.              <item 
  16.                  android:id="@+id/sub1" 
  17.                  android:title="sub1"/> 
  18.          </menu> 
  19.      </item> 
  20.  </menu> 
  1. @Override 
  2.      public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo){  
  3.          super.onCreateContextMenu(menu, v, menuInfo);  
  4.          menu.setHeaderTitle("context menu test");  
  5.          menu.setHeaderIcon(android.R.drawable.ic_menu_share);  
  6.          getMenuInflater().inflate(R.menu.test_menu, menu);  
  7.      }  
  8.      @Override 
  9.      public boolean onContextItemSelected(MenuItem item){  
  10.          switch (item.getItemId()) {  
  11.          case R.id.item1:  
  12.              item.setChecked(true);  
  13.              break;  
  14.          case R.id.item2:  
  15.          default:  
  16.              break;  
  17.          }  
  18.          return super.onContextItemSelected(item);  
  19.      } 

為方便大家自定義,這裡沒有提供onCreate方法,如果要實現ContextMenu效果需要在onCreate方法中調用: registerForContextMenu(View)方法;

Sub menu

  比較簡單:http://developer.android.com/reference/android/view/SubMenu.html 

  但是需要注意Sub menu不能添加子菜單,它Options menu及Context menu是可以添加之菜單的;由此可見在Android中菜單的深度只有二層。

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