歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Android中的Menu菜單小解

Android中的Menu菜單小解

日期:2017/3/1 10:47:08   编辑:Linux編程

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. // 1.直接指定標題
  7. menu.add("菜單項1");
  8. // 2.通過資源指定標題
  9. menu.add(R.string.menuitem2);
  10. // 3.顯示指定菜單項的組號、ID、排序號、標題
  11. menu.add(
  12. 1, //組號
  13. Menu.FIRST, //唯一的ID號
  14. Menu.FIRST, //排序號
  15. "菜單項3"); //標題
  16. // 如果希望顯示菜單,請返回true
  17. returntrue;
  18. }

上面的代碼演示了添加菜單項的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. </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