android 菜單設計

來源:互聯網
上載者:User
通過Android提供的NotePad樣本應用,及協助文檔中對菜單的相關描述,現將如何在我們的Androiod應用中定製我們自己的菜單,做一個小結。 

一、菜單的產生 

    對一個Android應用中的每一個螢幕,也就是說,對每一個Activity類,都會擁有一個預設菜單。在Activity類中,定義了幾個與菜單有關的方法,供繼承於Activity類的子類去重載,從而定製我們自己的菜單。這幾個方法為: 

public boolean onCreateOptionsMenu(android.view.Menu menu); 

public boolean onPrepareOptionsMenu(android.view.Menu menu); 

public boolean onOptionsItemSelected(android.view.MenuItem item); 

  為了產生我們自己的菜單,Android為我們提供了兩個時機點。當在Activity類執行個體啟動時,我們可以通過重載onCreateOptionsMenu()來定製我們的菜單;另外,也可以在菜單每次被調用時,對菜單中的項重建,通過重載onPrepareOptionsMenu來實現。對於第二種方式,由於每次調用時都要重建,對於那些不經常變化的菜單,效率就會比較低。看下面的代碼: 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
   super.onCreateOptionsMenu(menu); 
   menu.add(0, 0, “功能表項目一”); 
   menu.add(0, 1, “功能表項目二”); 
   menu.add(0, 2, “功能表項目三”); 
   return true; 

    Menu.add()方法第一個參數表示給這個新增的功能表項目分配一個分組號;第二個參數表示給這個新增的功能表項目分配一個唯一標識id;第三個參數為功能表項目的標題。 

    我們可以通過調用Menu.setItemShown()或者Menu.setGroupShown()方法來顯示或隱藏一些功能表項目。 

    這裡要注意的一個地方是:功能表項目的顯示順序是按代碼中添加的順序來的,也就是說Menu.add()方法只能在菜單的最後面新增一個功能表項目。另外,第一個參數的分組標識,不會改變功能表項目的顯示順序。 
二、響應功能表項目點擊 

   當菜單顯示出來後,使用者點擊菜單中的某一功能表項目,我們的菜單需要響應這個點擊事件。這個也很簡單,通過重載onOptionsItemSelected()方法來實現,直接上例子: 

@Override 
public boolean onOptionsItemSelected(Menu.Item item){ 
   switch (item.getId()) { 
   case 0: 
       showAlert(”Menu Item Clicked”, “功能表項目一”, “ok”, null, false, null); 
       return true; 
   case 1: 
       showAlert(”Menu Item Clicked”, “功能表項目二”, “ok”, null, false, null); 
       return true; 
   case 2: 
       showAlert(”Menu Item Clicked”, “功能表項目三”, “ok”, null, false, null); 
       return true; 
   } 
   return false; 

    這裡,我們還可以通過調用Item.setAlphabeticShortcut()或Item.setNumericShortcut()方法來增加功能表項目的快速鍵操作。 

    對響應功能表項目點擊,還有另一個辦法,可以通過實現Runnable類()的一個子類,做為訊息控制代碼來對功能表項目點擊做響應,但這種辦法效率較低,不推薦這麼做。 

三、增加子功能表 

    我們還可以通過調用Menu.addSubMenu()方法,為某個功能表項目添加子功能表,這個方法返回一個SubMenu執行個體,我們可以在這個SubMenu菜單中添加子功能表項。 

    註:菜單只能有一級子功能表,不支援多級。 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.