Android菜单详解(三)——SubMenu和IconMenu
2013-03-18 21:38
423 查看
我们在上一篇介绍了如何在Android中创建和响应选项菜单,今天我们将探索子菜单和图标菜单。
子菜单提供了一种自然的组织菜单项的方式,它被大量地运用在windows和其他OS的GUI设计中。Android同样支持子菜单,你可以通过addSubMenu(int
groupId, int itemId, int order, int titleRes)方法非常方便的创建和响应子菜单。
上面的代码演示了如何创建子菜单,其菜单项的响应其实就是普通菜单项的响应,上一篇已经作了详细介绍,这里不再赘述。Android中可以为子菜单添加图标,但是不会显示其菜单项的图标,这一点需要留意。除了代码中的setIcon(int
iconRes)方法,还有一个setHeaderIcon(int
iconRes)方法可以添加子菜单项栏目的标题图标,效果如上面第三张图。
最后需要强调的是,Menu可以包含多个SubMenu,SubMenu可以包含多个MenuItem(这三者之间的关系见Android菜单详解(一)——理解Android中的Menu),但是SubMenu不能包含SubMenu,及子菜单不能嵌套!!!下面的代码能通过编译,但会在运行时出错。
Android支持在菜单上显示各种各样的图标,这一点我们在上面创建子菜单时已经用到了。图标菜单严格上说并不算是一种菜单的新类型,它的使用也很简单,之所以单独设一节是为了说明使用Icon的一些限制。Android中并不是所谓的菜单项都能加上图标,以下菜单项都是不可以的(这并不意味着程序会报错,而是运行时图标得不到显示):
扩展的菜单项。如果不理解什么是扩展的菜单,可以参考Android菜单详解(一)——理解Android中的Menu
子菜单的菜单项
上下文菜单的菜单项
除此以外,带Icon的菜单项不能加上复选框(check mark)。总之,虽然精美的图标能给我们的应用增色不少,但是滥用图标也是会适得其反的,Android SDK给图标菜单加的这些限制也算是有效的防止我们滥用图标了吧。
本篇介绍了Android中的子菜单和给菜单项加Icon时需要注意的几点,下一篇《Android菜单详解(四)——使用上下文菜单ContextMenu》将介绍上下文菜单Context
Menu的使用。
子菜单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 return true; }
上面的代码演示了如何创建子菜单,其菜单项的响应其实就是普通菜单项的响应,上一篇已经作了详细介绍,这里不再赘述。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》将介绍上下文菜单ContextMenu的使用。
相关文章推荐
- Android菜单详解(三)——SubMenu和IconMenu
- Android菜单详解(三)——SubMenu和IconMenu
- Android菜单详解(三)——SubMenu和IconMenu
- Android菜单详解(三)——SubMenu和IconMenu
- Android菜单详解(三)——SubMenu和IconMenu
- Android菜单详解(三)----SubMenu和IconMenu
- Android菜单详解——子菜单(SubMenu)
- android应用开发详解(四)----------各种菜单(optionmenu、contextmenu、submenu)和Toast的使用
- Android_Menu常用菜单详解
- Android菜单详解 使用上下文菜单ContextMenu
- Android菜单详解(二)——创建并响应选项菜单
- Android基础之菜单详解
- Android学习指南之十六:Android菜单详解
- android菜单详解六:快捷键和菜单intent
- Android菜单详解(一)——理解Android中的Menu
- Android编程自定义菜单实现方法详解
- Android动画之属性动画Animator详解(卫星菜单)
- Android菜单详解(二)——创建并响应选项菜单
- Android菜单详解(五)——使用XML生成菜单
- Android 菜单详解