android的OptionsMenu

來源:互聯網
上載者:User

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="http://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="http://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 等等,因為使用者可能不懂得如何使用菜單。

 

 

 

相關文章

聯繫我們

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