android的OptionsMenu

OptionsMenu
        在android的SDK中options menu 是這樣解釋的:Options menus: The icon menus do not support item check marks and only show the item's condensed title. The expanded menus (only available if six or more menu items are visible, reached via the 'More' item in the icon menu) do not show item icons, and item check marks are discouraged.
具體的操作表現就是 在android手機上按 menu 鍵時顯示的菜單,點擊相應的菜單可以進行相應的操作。
使用步驟
    Option menu的使用比較簡單,首先在res文件夾下新建menu目錄,然後往裡面添加菜單的XML 文件。
[html]
?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="https://schemas.android.com/apk/res/android"> 
    <item android:id="@+id/settings" android:title="@string/settings_label" 
        android:icon="@android:drawable/ic_menu_preferences" 
        android:alphabeticShortcut="s"> 
    </item> 
     
</menu> 

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="https://schemas.android.com/apk/res/android">
    <item android:id="@+id/settings" android:title="@string/settings_label"
        android:icon="@android:drawable/ic_menu_preferences"
        android:alphabeticShortcut="s">
    </item>
   
</menu>item:每一個item對應一項菜單。
  android:icon:用於指定菜單顯示的圖標。
  android:title:菜單的標題,顯示在圖標下面。
  android:alphabeticShortcut:菜單選擇的快捷鍵。
  關於Menu的更多屬性請查看SDK上的 Menu Resource。
 
  第二步是在Activity裡重寫 onCreateOptionsMenu 方法,並通過MenuInflater 將剛才的xml資源轉化為Menu 實例。並顯示在Activity裡
[java]
/**
     * 創建系統菜單,該菜單通過按下Menu鍵顯示
     */ 
    @Override 
    publicboolean onCreateOptionsMenu(Menu menu) { 
        super.onCreateOptionsMenu(menu); 
        //通過MenuInflater將XML 實例化為 Menu Object  
        MenuInflater inflater = getMenuInflater(); 
        inflater.inflate(R.menu.menu, menu); 
 
        returntrue; 
    } 

/**
     * 創建系統菜單,該菜單通過按下Menu鍵顯示
     */
    @Override
    publicboolean onCreateOptionsMenu(Menu menu) {
        super.onCreateOptionsMenu(menu);
        //通過MenuInflater將XML 實例化為 Menu Object
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.menu, menu);

        returntrue;
    }運行模擬器點擊Menu鍵,就可以看到菜單目錄的顯示瞭。但是此時點擊菜單並沒有任何反應,原因是我們還沒添加對應的處理事件。給menu添加處理事件需要重寫public boolean onOptionsItemSelected(MenuItem item)方法。
[java]
/**
     * 菜單點擊事件
     */ 
    @Override 
    publicboolean onOptionsItemSelected(MenuItem item) { 
        switch (item.getItemId()) { 
        case R.id.about: 
            Logger.d("Displaying the about box"); 
            // 顯示關於頁  
            displayAboutBox(); 
            returntrue; 
        case R.id.help: 
            Logger.d("Displaying the help dialog"); 
            // 顯示到幫帳頁  
            displayHelpDialog(); 
            returntrue; 
        case R.id.settings: 
            Logger.d("Displaying the settings"); 
            // 跳轉到配置頁  
            displaySettings(); 
            returntrue; 
        case R.id.teams: 
            Logger.d("Displaying the team configuration"); 
            // 跳轉到團隊配置頁  
            displayTeamConfiguration(); 
            returntrue; 
        case R.id.quit: 
            Logger.d("Quitting"); 
            // 退出程序  
            finish(); 
            returntrue; 
        default: 
            Logger.e("Unknown menu item selected"); 
            //返回False交由系統正常處理菜單,返回True則由本程序處理  
returnfalse; 
        } 
 
    } 

/**
     * 菜單點擊事件
     */
    @Override
    publicboolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
        case R.id.about:
            Logger.d("Displaying the about box");
            // 顯示關於頁
            displayAboutBox();
            returntrue;
        case R.id.help:
            Logger.d("Displaying the help dialog");
            // 顯示到幫帳頁
            displayHelpDialog();
            returntrue;
        case R.id.settings:
            Logger.d("Displaying the settings");
            // 跳轉到配置頁
            displaySettings();
            returntrue;
        case R.id.teams:
            Logger.d("Displaying the team configuration");
            // 跳轉到團隊配置頁
            displayTeamConfiguration();
            returntrue;
        case R.id.quit:
            Logger.d("Quitting");
            // 退出程序
            finish();
            returntrue;
        default:
            Logger.e("Unknown menu item selected");
            //返回False交由系統正常處理菜單,返回True則由本程序處理
returnfalse;
        }

    }根據MenuItem的 getItemId()獲取對應menu項的ID,這個id值對應xml中的  android:id。這樣菜單功能就完成實現瞭,建議將一些不常用的功能鏈接放到菜單中例如:about us 、help 等等,因為用戶可能不懂得如何使用菜單。

 

 

 

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。