子菜单是能够显示更加详细信息的Android系统菜单子项,如图1所示。其中,菜单子项使用了浮动窗体的显示形式,能够更好地适应小屏幕的显示方式。

图1 菜单子项
Android系统的子菜单使用非常灵活,可以在选项菜单或快捷菜单中使用子菜单,有利于将相同或相似的菜单子项组织在一起,便于显示和分类。但是,子菜单不支持嵌套。
子菜单的添加使用addSubMenu()方法实现,代码如代码清单1所示。
代码清单1 onOptionsItemSelected()
SubMenu uploadMenu = (SubMenu) menu.addSubMenu
(0,MENU_UPLOAD,1,"上传设置").setIcon(R.drawable.upload);
uploadMenu.setHeaderIcon(R.drawable.upload);
uploadMenu.setHeaderTitle("上传参数设置");
uploadMenu.add(0,SUB_MENU_UPLOAD_A,0,"上传参数A");
uploadMenu.add(0,SUB_MENU_UPLOAD_B,0,"上传参数B");
第1行代码在onCreateOptionsMenu()方法传递的menu对象上调用addSubMenu()方法,在选项菜单中添加一个菜单子项,用户单击后可以打开子菜单;addSubMenu()方法与选项菜单中使用过的add()方法支持相同的参数,同样可以指定菜单子项的ID、组ID和标题等参数,并且能够通过setIcon()方法显示菜单的图标。
第2行代码使用setHeaderIcon ()方法,定义子菜单的图标。
第3行定义子菜单的标题,若不规定子菜单的标题,子菜单将显示父菜单子项标题,即第1行代码中“上传设置”。
第4行和第5行在子菜单中添加了两个菜单子项,菜单子项的更新方法和选择事件处理方法,仍然使用onPrepareOptionsMenu()方法和onOptionsItemSelected ()方法。
以《Android系统菜单之选项菜单》文中的代码为基础,将“上传设置”改为子菜单,并在子菜单中添加“上传参数A”和“上传参数B”两个菜单子项。运行结果如图2所示。

图2 运行效果图