Android菜单详解(三)——SubMenu和IconMenu
我們在上一篇介紹了如何在Android中創建和響應選項菜單,今天我們將探索子菜單和圖標菜單。
子菜單Sub Menu
?
子菜單提供了一種自然的組織菜單項的方式,它被大量地運用在windows和其他OS的GUI設計中。Android同樣支持子菜單,你可以通過addSubMenu(int groupId, int itemId, int order, int titleRes)方法非常方便的創建和響應子菜單。
@Overridepublicboolean 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的使用。
轉載于:https://www.cnblogs.com/codingmyworld/archive/2011/08/25/2153099.html
總結
以上是生活随笔為你收集整理的Android菜单详解(三)——SubMenu和IconMenu的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android之利用EventBus进行
- 下一篇: android ListView实现下拉