- 浏览: 2998058 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (893)
- android (110)
- iphone (198)
- java (79)
- JavaScript手册-目录 (9)
- JavaScript手册-Array (19)
- JavaScript手册-Boolean (5)
- JavaScript手册-Date (50)
- JavaScript手册-Math (30)
- JavaScript手册-Number (14)
- JavaScript手册-RegExp (7)
- JavaScript手册-String (38)
- JavaScript手册-全局函数 (8)
- JavaScript实用脚本 (7)
- Others (21)
- java-jpcap (7)
- java-thread (1)
- ibm文章 (3)
- classloader (2)
- java-filter (2)
- 运行环境 (33)
- java-正则 (2)
- oracle (1)
- linux-shell (26)
- wap (1)
- sqlite (3)
- wow (1)
- jvm (1)
- git (5)
- unity3d (29)
- iap (2)
- mysql (23)
- nginx (14)
- tomcat (9)
- apache (2)
- php (1)
- ubuntu (40)
- rsa (1)
- golang (21)
- appstore (5)
- sftp (2)
- log4j (2)
- netty (18)
- 测试工具 (6)
- memcache (5)
- 设计模式 (1)
- centos (8)
- google_iab (5)
- iOS专题 (4)
- mac (10)
- 安装配置帮助手册 (2)
- im4java_graphicsmagick (5)
- inotify-tools (1)
- erlang (6)
- 微信支付 (1)
- redis (8)
- RabbitMQ (5)
最新评论
-
heng123:
Netty视频教程https://www.douban.com ...
netty4.0.23 初学的demo -
maotou1988:
使用Netty进行Android与Server端通信实现文字发 ...
netty4.0.23 初学的demo -
码革裹尸:
非常感谢,正好用上
android 呼入电话的监听(来电监听) -
rigou:
提示的/222.177.4.242 无法链接到ip地址,是什 ...
通过 itms:services://? 在线安装ipa ,跨过app-store -
duwanbo:
GridView与数据绑定
Android 菜单(SubMenu)
SubMenu(子菜单),是在选项菜单的基础上增加子菜单。
一个Menu对象可以拥有0或多个SubMenu,通过调用Menu.addSubMenu方法将SubMenu添加到当前Menu中。在SubMenu 添加MenuItem的方式和在Menu中添加MenuItem方式一样,因为SubMenu是Menu的子类,但是SubMenu里不能再添加 SubMenu。
Android提供了基于Group id管理多个MenuItem的方法。
removeGroup(int group):移除所有属于group的MenuItem。
setGroupEnable( int group ,boolean enable):批量开启或关闭整个组的MenuItem。
setGroupVisible( int group ,visible):批量显示或隐藏整个组的MenuItem。
setGroupCheckable( int group ,boolean checkable,boolean exclusive):设置菜单是否可选中。最后一个exclusive是指是单选还是多选,当exclusive是true时,系统将菜单前面添加单选 框,是false时则变成是checkbox多选框。
示例:(在选项菜单[帮助]上配置了三个子菜单[LiveHelp,Email,Phone])
|
|
效果图
Activity代码
//定义选项菜单 final private static int OPTION_MENU_HELP = 3;//菜单[帮助]的编号 final private static int OPTION_MENUS_GROUP0 = 0;//菜单组0# final private static int OPTION_MENUS_GROUP1 = 1;//菜单组1# final private static int OPTION_MENUS_GROUP2 = 2;//菜单组2# private MenuEntity[] optionMenus = { new MenuEntity(OPTION_MENUS_GROUP0, 1, 1, "删除",android.R.drawable.ic_menu_delete), new MenuEntity(OPTION_MENUS_GROUP0, 2, 2, "保存",android.R.drawable.ic_menu_edit), new MenuEntity(OPTION_MENUS_GROUP0, 3, 3, "帮助",android.R.drawable.ic_menu_help), new MenuEntity(OPTION_MENUS_GROUP0, 4, 4, "添加",android.R.drawable.ic_menu_add), new MenuEntity(OPTION_MENUS_GROUP1, 5, 5, "详细",android.R.drawable.ic_menu_info_details), new MenuEntity(OPTION_MENUS_GROUP1, 6, 6, "发送",android.R.drawable.ic_menu_send), new MenuEntity(OPTION_MENUS_GROUP1, 7, 7, "电话",android.R.drawable.ic_menu_call), new MenuEntity(OPTION_MENUS_GROUP1, 8, 8, "照相",android.R.drawable.ic_menu_camera), }; //定义选项菜单[帮助]的子菜单 private MenuEntity[] helpSubMenus = { new MenuEntity(OPTION_MENUS_GROUP2, 9, 1, "LiveHelp",android.R.drawable.ic_menu_delete), new MenuEntity(OPTION_MENUS_GROUP2, 10, 2, "Email",android.R.drawable.ic_menu_edit), new MenuEntity(OPTION_MENUS_GROUP2, 11, 2, "Phone",android.R.drawable.ic_menu_edit), }; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main_list_view); } /** * 读取选中点击的菜单 * @param index * @return */ public String readOptionsMenu(int index){ for(int i=0;i<optionMenus.length;i++){ if(optionMenus[i].getItemId()==index) return optionMenus[i].getTitle().toString(); } for(int i=0;i<helpSubMenus.length;i++){ if(helpSubMenus[i].getItemId()==index) return helpSubMenus[i].getTitle().toString(); } return ""; } @Override public boolean onCreateOptionsMenu(Menu menu) {//创建选项菜单 for(MenuEntity menuEntity:optionMenus){ if(OPTION_MENU_HELP==menuEntity.getItemId()){ //菜单[帮助]增加子菜单 SubMenu subMenu = menu.addSubMenu(menuEntity.getGroupId(), menuEntity.getItemId(), menuEntity.getOrder(), menuEntity.getTitle()).setIcon(menuEntity.getIconRes()); for(MenuEntity subMenuEntity:helpSubMenus){ subMenu.add(subMenuEntity.getGroupId(), subMenuEntity.getItemId(), subMenuEntity.getOrder(), subMenuEntity.getTitle()).setIcon(subMenuEntity.getIconRes()); } }else{ menu.add(menuEntity.getGroupId(), menuEntity.getItemId(), menuEntity.getOrder(), menuEntity.getTitle()).setIcon(menuEntity.getIconRes()); } } return super.onCreateOptionsMenu(menu); } @Override public boolean onOptionsItemSelected(MenuItem item) { int itemId = item.getItemId(); Toast.makeText(context, "menu["+itemId+":"+item.getTitle()+"]被点击了", Toast.LENGTH_SHORT).show(); return super.onOptionsItemSelected(item); } @Override public void onOptionsMenuClosed(Menu menu) { Toast.makeText(context, "OptionsMenu被关闭了", Toast.LENGTH_SHORT).show(); super.onOptionsMenuClosed(menu); }
备注
private MenuEntity[] optionMenus = { new MenuEntity(OPTION_MENUS_GROUP0, 1, 1, "删除",android.R.drawable.ic_menu_delete), new MenuEntity(OPTION_MENUS_GROUP0, 2, 2, "保存",android.R.drawable.ic_menu_edit), new MenuEntity(OPTION_MENUS_GROUP0, 3, 3, "帮助",android.R.drawable.ic_menu_help), new MenuEntity(OPTION_MENUS_GROUP0, 4, 4, "添加",android.R.drawable.ic_menu_add), new MenuEntity(OPTION_MENUS_GROUP1, 5, 5, "详细",android.R.drawable.ic_menu_info_details), new MenuEntity(OPTION_MENUS_GROUP1, 6, 6, "发送",android.R.drawable.ic_menu_send), new MenuEntity(OPTION_MENUS_GROUP1, 7, 7, "电话",android.R.drawable.ic_menu_call), new MenuEntity(OPTION_MENUS_GROUP1, 8, 8, "照相",android.R.drawable.ic_menu_camera), }; //定义选项菜单[帮助]的子菜单 private MenuEntity[] helpSubMenus = { new MenuEntity(OPTION_MENUS_GROUP2, 9, 1, "LiveHelp",android.R.drawable.ic_menu_delete), new MenuEntity(OPTION_MENUS_GROUP2, 10, 2, "Email",android.R.drawable.ic_menu_edit), new MenuEntity(OPTION_MENUS_GROUP2, 11, 2, "Phone",android.R.drawable.ic_menu_edit), };
其中的
MenuEntity
参考 关于菜单基础属性的实体类
附录一 : 调用方法 removeGroup(int group)
@Override public boolean onCreateOptionsMenu(Menu menu) {//创建选项菜单 for(MenuEntity menuEntity:optionMenus){ if(OPTION_MENU_HELP==menuEntity.getItemId()){ //菜单[帮助]增加子菜单 SubMenu subMenu = menu.addSubMenu(menuEntity.getGroupId(), menuEntity.getItemId(), menuEntity.getOrder(), menuEntity.getTitle()).setIcon(menuEntity.getIconRes()); for(MenuEntity subMenuEntity:helpSubMenus){ subMenu.add(subMenuEntity.getGroupId(), subMenuEntity.getItemId(), subMenuEntity.getOrder(), subMenuEntity.getTitle()).setIcon(subMenuEntity.getIconRes()); } }else{ menu.add(menuEntity.getGroupId(), menuEntity.getItemId(), menuEntity.getOrder(), menuEntity.getTitle()).setIcon(menuEntity.getIconRes()); } } menu.removeGroup(OPTION_MENUS_GROUP1);//移除全部group为1的菜单 return super.onCreateOptionsMenu(menu); }
如图所示:原group为1的菜单不显示了!
附录二 : 调用方法 setGroupEnabled( int group, boolean enabled )
关闭或者开启组为group的全部菜单。(关闭:enabled =false,菜单项变灰,不能点;开启:enabled =false,菜单项正常,可以点)
@Override public boolean onCreateOptionsMenu(Menu menu) {//创建选项菜单 for(MenuEntity menuEntity:optionMenus){ if(OPTION_MENU_HELP==menuEntity.getItemId()){ //菜单[帮助]增加子菜单 SubMenu subMenu = menu.addSubMenu(menuEntity.getGroupId(), menuEntity.getItemId(), menuEntity.getOrder(), menuEntity.getTitle()).setIcon(menuEntity.getIconRes()); for(MenuEntity subMenuEntity:helpSubMenus){ subMenu.add(subMenuEntity.getGroupId(), subMenuEntity.getItemId(), subMenuEntity.getOrder(), subMenuEntity.getTitle()).setIcon(subMenuEntity.getIconRes()); } }else{ menu.add(menuEntity.getGroupId(), menuEntity.getItemId(), menuEntity.getOrder(), menuEntity.getTitle()).setIcon(menuEntity.getIconRes()); } } menu.setGroupEnabled(OPTION_MENUS_GROUP1, false);//关闭group为1的菜单 return super.onCreateOptionsMenu(menu); }
|
|
group为1的菜单项变灰了
发表评论
-
Android Fragment 真正的完全解析(下)
2015-03-25 14:30 1122Android Fragment 真正 ... -
Android Fragment 真正的完全解析(上)
2015-03-25 10:14 912Android Fragment 真正的 ... -
Activity的生命周期方法
2015-03-25 09:54 580一:Activity的生命周期方法 Android ... -
Android在layout xml中使用include
2015-03-25 07:28 998在Android的layout样式定义中,可以使 ... -
一个支持圆角的快速ImageView:RoundedImageView
2015-03-07 09:50 11093一个支持圆角的快速ImageView:Rounded ... -
ImageView图片设置
2015-03-05 23:08 957显示任意图像,例如图标。ImageView类可以加载 ... -
ListActivity的onListItemClick不响应的解决办法
2015-03-04 17:57 1108ListActivity的onListItemClic ... -
ListView中有控件隐藏或显示造成的显示错误问题
2015-03-03 23:03 1853ListView中有控件隐藏或显示造成的显示错误问题 ... -
Android中Application类用法
2015-03-03 09:12 997Android中Application类用法 ... -
Android使用Application总结
2015-03-03 09:11 1195Android使用Application ... -
在android中运行java main方法
2015-02-27 10:38 998在android中运行java main方法 ... -
android BitmapFactory.Options
2015-02-19 21:01 1036public Bitmap inBi ... -
android 基础demo例子
2015-02-16 21:06 836demoDatas.add(new DemoBe ... -
Android大图片裁剪终极解决方案
2015-02-15 17:08 2165Android大图片裁剪终 ... -
Android_照相机Camera_调用系统照相机返回data为空
2015-02-15 14:17 1294Android_照相机Camera_调用系统照相机返回 ... -
Android: 打印Bundle内容
2015-02-15 14:11 2967Android: 打印Bundle内容 有的时 ... -
android线程、UI、AsyncTask
2015-02-13 18:06 1287本文是转摘的,看过了觉得很好!所以转了过来!如果你想要 ... -
Fragment中ListView的使用
2015-02-06 23:01 2127Fragment中ListView的使用 直接 ... -
在安卓开发时用酷派手机无法打印出应用内的日志的解决方法
2014-12-11 20:39 1200在安卓开发时用酷派手机无法打印出应用内的日志的解决方法 ... -
查看安卓APK文件证书的方法
2014-12-04 10:05 1011************************** ...
相关推荐
Andorid.view.MenuItem代表每个菜单项,android.view.SubMenu代表子菜单,其三者的关系如下图所示,子菜单可以包裹多个菜单项,SubMenu继承了Menu的addSubMenu方法,但不能调用,因为不能嵌套调用。...
本资源"Android菜单文件大全"全面介绍了如何在Android系统中创建和管理各种类型的菜单,包括代码生成、XML配置文件生成、上下文菜单以及子菜单的实现。 首先,Android中的菜单主要分为两种生成方式:代码动态生成和...
Android开发实现SubMenu选项菜单和子菜单示例 Android开发实现SubMenu选项菜单和子菜单是Android开发中非常重要的知识点。SubMenu选项菜单和子菜单可以帮助开发者快速创建菜单项,并且可以根据需要进行配置和布局...
在本篇内容中,我们将深入探讨如何使用`Menu`, `SubMenu`, 和 `MenuItem`来创建和管理Android的图标选项菜单。 ### 1. Menu类 `Menu`是Android系统提供的接口,它表示一个抽象的菜单对象,可以包含多个菜单项。...
下面将详细讲解Android开发中常见的三种菜单:选项菜单、子菜单以及上下文菜单。 1. 选项菜单(Option Menu) 选项菜单是最常见的一种菜单类型,通常出现在屏幕的右上角或者在屏幕顶部的状态栏中,当用户点击菜单...
Android提供了多种菜单类型,包括选项菜单(Option Menu)、上下文菜单(Context Menu)和子菜单(Submenu)。选项菜单通常出现在屏幕顶部的三个点(汉堡菜单)中,而上下文菜单则在长按某项内容时显示。要创建这些...
在Android应用开发中,上下文菜单(Context Menu)、选项菜单(OptionsMenu)和子菜单(Submenu)是三种重要的交互方式,用于提供用户与应用界面的多种操作选项。它们各自有不同的应用场景和设计规范,对于提升用户体验至...
除了基本的创建和显示,Android菜单还支持动态更新,例如在运行时添加、删除或修改菜单项。此外,还可以利用`MenuInflater`类来方便地加载XML菜单布局,提高代码的可读性和复用性。 菜单的视觉样式和行为可以通过...
菜单是用户界面中最常见的元素之一,使用非常频繁,在Android中,菜单被分为如下三种,选项菜单(OptionsMenu)、上下文菜单(ContextMenu)和子菜单(SubMenu).参考博客:...
在Android应用开发中,菜单是用户界面不可或缺的一部分,它提供了用户与应用交互的重要途径。...在`MenuDemo`项目中,你应该能够找到以上功能的具体实现,通过学习和修改代码,加深对Android菜单系统理解。
本资源“老罗android视频开发源码和ppt--android菜单的使用.rar”是由知名的Android开发者罗升阳(也被大家亲切地称为老罗)制作的,旨在帮助开发者深入理解和实际运用Android菜单功能。 首先,让我们来探讨一下...
在Android应用开发中,"Submenu动态变化的小例子"是一个典型的交互设计,它涉及到用户界面(UI)中的下拉菜单功能。Submenu通常出现在主菜单项的下方,提供更具体的操作选项。在这个项目中,我们关注的是如何根据用户...
在Android应用开发中,创建一个多级菜单列表是常见的需求,特别是在构建导航系统或者设置界面时。本示例程序“android多级菜单列表设计例程”提供了实现这一功能的基础框架,适用于开发者进行二次开发,比如将其修改...
本文将深入探讨Android菜单的相关知识点,包括菜单类型、创建过程、菜单项操作以及自定义菜单等。 首先,Android菜单主要分为三种类型:选项菜单(Option Menu)、上下文菜单(Context Menu)和弹出式菜单...
本文将详细探讨Android系统中的三种菜单类型:Options Menu、Context Menu和SubMenu。 首先,我们来了解一下Options Menu,也称为主菜单。Options Menu是Android应用程序中最常见的菜单类型,通常在屏幕的顶部或...
在Android开发中,选项菜单(Option Menu)是用户界面中常见的一种交互元素,它通常在屏幕底部弹出,当用户按下设备的Menu键时出现。选项菜单提供了一种方式来展示多个操作选项,使用户能够轻松访问不同的功能。本文将...
以上就是关于Android菜单系统的基本介绍和实现方法,通过理解和掌握这些知识点,开发者可以创建更加用户友好的Android应用程序。在实际开发中,结合具体需求灵活运用,可以提升应用的用户体验。
SubMenu是Android开发中常见的一种控件,主要用于在菜单项中嵌套子菜单,提供更为复杂的交互体验。在Android应用设计中,尤其是具有多层级结构的菜单界面,SubMenu是一个不可或缺的元素。下面我们将深入探讨SubMenu...