歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Android中的Menu菜單小解

Android SDK提供的菜單有如下幾種:

1.   選項菜單:最常規的菜單,android中把它叫做option menu

2.   子菜單:android中點擊子菜單將彈出懸浮窗口顯示子菜單項。子菜單不支持嵌套,即子菜單中不能再包括其他子菜單。

3.   上下文菜單:android中長按視圖控件後出現的菜單,windows點擊右鍵彈出的菜單即上下文菜單

選項菜單最多只能顯示6個菜單項,超過6個時,第6個菜單項會被系統替換為一個叫“更多”的子菜單,原來顯示不下的菜單項都作為“更多”菜單的子菜單項。如下圖:


第6個菜單項自動變為“更多”


點擊“更多”顯示其他菜單項

每個菜單都包含兩個部分:

1. 建立菜單

2. 處理選項動作

"onCreateOptionsMenu" 函數即菜單列的主體。在 Android 機器或模擬器上按下硬體 的"Menu"( 菜單 ) 鍵,所彈出的菜單列即是靠 "onCreateOptionsMenu" 函數來定義。當我們在Activity 中定義了"onCreateOptionsMenu" 之後,按下"Menu"( 菜單 ) 鍵時,就會彈出相對應的菜單列。當我們在 Android 應用程序的菜單列上選擇了相應的選項後,則是依賴"onOptionsItemSelected" 函數,來負責處理菜單列中各選項所個別對應的動作。

關系可以用下圖來表示:


Android的activity已經為我們提前創建好了android.view.Menu對象,並提供了回調方法onCreateOptionsMenu(Menu menu)供我們初始化菜單的內容。該方法只會在選項菜單第一次顯示的時候被執行,如果你需要動態改變選項菜單的內容,請使用onPrepareOptionsMenu(Menu)

public boolean onPrepareOptionsMenu(Menumenu) {//動態的修改菜單title

           MenuItemitem=menu.findItem(SAVE_AS);

           item.setTitle(item.getTitle()+""+i);

           i++;

           returnsuper.onPrepareOptionsMenu(menu);

      }

代碼創建和響應最常用的選項菜單:

  1. publicboolean onCreateOptionsMenu(Menu menu) {  
  2.     // 調用父類方法來加入系統菜單   
  3.     // 雖然目前android還沒有系統菜單,但是為了兼容到以後的版本,最好加上   
  4. super.onCreateOptionsMenu(menu);  
  5.      
  6.     // 添加菜單項(多種方式)   
  7.     // 1.直接指定標題   
  8.     menu.add("菜單項1");  
  9.     // 2.通過資源指定標題   
  10.     menu.add(R.string.menuitem2);  
  11.     // 3.顯示指定菜單項的組號、ID、排序號、標題   
  12.     menu.add(  
  13.             1,            //組號   
  14.             Menu.FIRST, //唯一的ID號   
  15.             Menu.FIRST, //排序號   
  16. "菜單項3"); //標題   
  17.      
  18.     // 如果希望顯示菜單,請返回true   
  19. returntrue;  
  20. }  

上面的代碼演示了添加菜單項的3種方法,下面解釋下第三種方法add(intgroupId, int itemId, int order,CharSequence title)。其中,第一個參數是組號,android中你可以給菜單分組,以便快速地操作同一組的菜單。第二個參數指定每個菜單項的唯一ID號,你可以自己指定,也可以讓系統來自動分配,在響應菜單時你需要通過ID號來判斷哪個菜單被點擊了。因此常規的做法是定義一些ID常量,但在android中有更好的方法,就是通過資源文件來引用,這個之後介紹。第三個參數代表菜單項顯示順序的編號,編號小的顯示在前面。

使用xml生成菜單:

Options_menu.xml文件

  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/newFile"  
  5.         android:icon="@drawable/ic_launcher"  
  6.         android:title="@string/newFile"/>  
  7.     <!-- android:icon 設置菜單選項的圖標    
  8.     android:title 設置菜單選項的標題 -->    
  9.     <item   
  10.         android:id="@+id/exit"  
  11.         android:icon="@drawable/ic_launcher"  
  12.         android:title="@string/exit"/>  
  13.   
  14. </menu>  

在activity中加上下面這兩句:

MenuInflaterinflater=this.getMenuInflater();

inflater.inflate(R.menu.options_menu,menu);

xml相應的菜單就會加入進去;

inflater在android中建立了從資源文件到對象的橋梁,MenuInflater即把菜單xml資源轉換為對象並添加到menu對象中,它可以通過activity的getMenuInflater()得到。我們在MainActivity中重寫onCreateOptionsMenu(...)方法。

Copyright © Linux教程網 All Rights Reserved