Android菜單詳解(三)——SubMenu和IconMenu

來源:互聯網
上載者:User

我們在上一篇介紹了如何在Android中建立和響應選項菜單,今天我們將探索子功能表和表徵圖菜單。

子功能表Sub Menu

 

子功能表提供了一種自然的組織功能表項目的方式,它被大量地運用在windows和其他OS的GUI設計中。Android同樣支援子功能表,你可以通過addSubMenu(int groupId, int itemId, int order, int titleRes)方法非常方便的建立和響應子功能表。

@Override
publicboolean onCreateOptionsMenu(Menu menu) {
int base = Menu.FIRST;
// 一個menu可以包括多個子功能表
SubMenu subMenu = menu.addSubMenu(base, base+1, Menu.NONE, "系統設定");
// 子功能表可以包括多個功能表項目
MenuItem menuitem1 = subMenu.add(base, base+1, base+1, "顯示設定");
subMenu.add(base, base+2, base+2, "網路設定");
subMenu.add(base, base+3, base+3, "進階設定");
subMenu.add(base, base+4, base+4, "安全設定");

// 子功能表項不支援顯示表徵圖,這樣做是沒意義的,儘管不會報錯!
menuitem1.setIcon(R.drawable.displaysettings);

//但是子功能表本身是支援表徵圖的
subMenu.setIcon(R.drawable.settings);

// 顯示菜單請返回true
returntrue;
}

上面的代碼示範了如何建立子功能表,其功能表項目的響應其實就是普通功能表項目的響應,上一篇已經作了詳細介紹,這裡不再贅述。Android中可以為子功能表添加表徵圖,但是不會顯示其功能表項目的表徵圖,這一點需要留意。除了代碼中的setIcon(int iconRes)方法,還有一個setHeaderIcon(int iconRes)方法可以添加子功能表項欄目的標題表徵圖,效果如上面第三張圖。

最後需要強調的是,Menu可以包含多個SubMenu,SubMenu可以包含多個MenuItem(這三者之間的關係見Android菜單詳解(一)——理解Android中的Menu),但是SubMenu不能包含SubMenu,及子功能表不能嵌套!!!下面的代碼能通過編譯,但會在運行時出錯。

subMenu.addSubMenu("又一個子功能表");
表徵圖菜單Icon Menu

Android支援在菜單上顯示各種各樣的表徵圖,這一點我們在上面建立子功能表時已經用到了。表徵圖菜單嚴格上說並不算是一種菜單的新類型,它的使用也很簡單,之所以單獨設一節是為了說明使用Icon的一些限制。Android中並不是所謂的功能表項目都能加標,以下功能表項目都是不可以的(這並不意味著程式會報錯,而是運行時表徵圖得不到顯示):

  • 擴充的功能表項目。如果不理解什麼是擴充的菜單,可以參考Android菜單詳解(一)——理解Android中的Menu
  • 子功能表的功能表項目
  • 操作功能表的功能表項目

除此以外,帶Icon的功能表項目不能加上複選框(check mark)。總之,雖然精美的表徵圖能給我們的應用增色不少,但是濫用表徵圖也是會適得其反的,Android SDK給表徵圖菜單加的這些限制也算是有效防止我們濫用表徵圖了吧。

結語

本篇介紹了Android中的子功能表和給功能表項目加Icon時需要注意的幾點,下一篇《Android菜單詳解(四)——使用操作功能表ContextMenu》將介紹操作功能表Context Menu的使用。

相關文章

聯繫我們

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