/*
 * 选项菜单和子菜单(SubMenu)
 * 添加菜单和子菜单的步骤如下:
 * 1.重写Activity哦onCreateOptionsMenu(Menu menu)的方法,
 *   在该方法里调用Menu对象的方法来添加菜单或是子菜单。
 * 2.如果希望应用程序能响应菜单现的单击事件,重写Activity
 *   的onOptionItemSelectd(MenuItem mi)方法即可
 */
import 略

public class Ex002_14Activity extends Activity {
// 定义字体大小菜单项的标识
final int FONT_10 = 0X111;
final int FONT_12 = 0X112;
final int FONT_14 = 0X113;
final int FONT_16 = 0X114;
final int FONT_18 = 0X115;
// 定义普通菜单项的标识
final int PLAIN_ITEM = 0X11b;
// 定义颜色菜单项的标识
final int FONT_RED = 0X116;
final int FONT_BLUE = 0X117;
final int FONT_GREEN = 0X118;
private TextView tv;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
tv = (TextView) findViewById(R.id.tv);
}
// 当用户点击菜单键时触发该方法
public boolean onCreateOptionsMenu(Menu menu) {
// ---------向menu中添加字体大小的子菜单----------
SubMenu fontMenu = menu.addSubMenu("字体大小");
menu.add("111");
// 设置菜单的图标、菜单头的图标和菜单头的标题
fontMenu.setIcon(R.drawable.font);
fontMenu.setHeaderIcon(R.drawable.font);
fontMenu.setHeaderTitle("选择字体大小");
fontMenu.add(1, FONT_10, 0, "10号字体");
fontMenu.add(1, FONT_12, 0, "12号字体");
fontMenu.add(0, FONT_14, 0, "14号字体");
fontMenu.add(0, FONT_16, 0, "16号字体");
fontMenu.add(2, FONT_18, 0, "18号字体");
// ---------向menu中添加普通菜单项----------
menu.add(0, PLAIN_ITEM, 0, "普通菜单");
// ---------向menu中添加文字颜色子菜单项----------
SubMenu colorMenu = menu.addSubMenu("字体颜色");
// 设置菜单头的标题和图标
colorMenu.setHeaderTitle("选择文字颜色");
colorMenu.setHeaderIcon(R.drawable.color);
// 往colorMenu中添加菜单项
colorMenu.add(0, FONT_RED, 0, "红色");
colorMenu.add(0, FONT_GREEN, 0, "绿色");
colorMenu.add(0, FONT_BLUE, 0, "蓝色");
return super.onCreateOptionsMenu(menu);
}
// 菜单项被单击后的回调方法
public boolean onOptionsItemSelected(MenuItem mi) {
// 判断单击到了哪个菜单项
switch (mi.getItemId()) {
case FONT_10:
tv.setTextSize(10 * 2);
break;
case FONT_12:
tv.setTextSize(12 * 2);
break;
case FONT_14:
tv.setTextSize(14 * 2);
break;
case FONT_16:
tv.setTextSize(16 * 2);
break;
case FONT_18:
tv.setTextSize(18 * 2);
break;
case PLAIN_ITEM:
Toast toast = Toast.makeText(Ex002_14Activity.this, "你单击了普通按钮",
Toast.LENGTH_SHORT);
toast.show();
break;
default:
break;
}
return true;
}
}

下面我们来看下运行后的结果:

总结:上面的程序代码就是添加了四个菜单的代码,其中有两个是子菜单,两个是普通的菜单,
而且程序还为子菜单设置了图标,运行上面的程序后点击“MENU”按键就可以看到如上图的界面了。
我们可以在Menu中添加子菜单(SubMenu)和添加菜单项(MenuItem),但是我们不能在子菜单中尝试
添加子菜单,否则程序会出现如下异常:(这个就不要我来翻译了吧,我英语也不好...)
java.lang.UnsupportedOperationException: Attempt to add a sub-menu to a sub-menu.

选项菜单和子菜单(SubMenu)相关推荐

  1. (SubMenu)选项菜单和子菜单应用

    菜单在桌面上应用广泛,几乎所有的桌面应用都有菜单.与桌面应用的菜单不同,Android应用中的菜单默认是看不见的,只有当用户按下手机上的"MENU"键时,系统才会显示该应用关联的菜 ...

  2. 选项菜单_上下文菜单_子菜单_图标菜单_自定义菜单_联系人标记弹出菜单

    菜单控件<Menu > 选项菜单(Option Menu) 单击Menu实体按钮弹出,android中把它叫做option menu 上下文菜单(ContextMenu 是Menu的子接口 ...

  3. android之三大菜单(子菜单,选项菜单,上下文菜单)

    今天班级同学聚餐,真的是喝的有点多,本来计划今天要完成这篇博客.有点喝多了,写的不好请见谅.想仔细了解的话,看官网说的,是中文的. https://developer.android.com/guid ...

  4. SWT 下菜单与子菜单添加的实现(详细图解)

    SWT 为Java程序的用户界面设计提供了极大的方便,许多新手在刚刚接触SWT时,不知从何下手,往往在实现最简单的功能时也会遇到许许多多的麻烦,比如常遇到的菜单以及子菜单的添加,下面我用一个例程演示一 ...

  5. Electron中实现菜单、子菜单、以及自带操作事件

    场景 用HTML和CSS和JS构建跨平台桌面应用程序的开源库Electron的介绍以及搭建HelloWorld: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/a ...

  6. HTML5制作二级菜单(主菜单的子菜单)

    HTML5制作二级菜单(主菜单的子菜单) 一.HTML文件代码 二. CSS文件代码 三.效果图 一.HTML文件代码 <!--submenu.html--> <!DOCTYPE h ...

  7. js动态加载div显示主菜单和子菜单+jquery获取动态id

    最近在做项目重构的主界面工作中,需要动态显示主菜单以及子菜单(各个界面的链接),查看原来老系统采用的是asp控件,但是重构的时候采用mvc框架,而且这些菜单并不是死的,而是通过其他界面来配置的,主菜单 ...

  8. Menu详解(二):利用XML生成菜单和子菜单

    前言:上篇,我们说了有关代码生成菜单和子菜单的方法,这里我们再讲讲有关利用XML生成菜单和子菜单的问题. 业精于勤,荒于嬉,行成于思,毁于随 (日拱一卒) 系列文章: 1.<Menu详解(一): ...

  9. 【Android基础知识】选项菜单、上下文菜单、子菜单的使用

    Android菜单类型 菜单是为了增加更多的功能,不占用屏幕的空间.Android中菜单类型有三类,选项菜单(OptionMenu).上下文菜单(ContextMenu).子菜单(SubMenu),下 ...

最新文章

  1. keil4怎么移植其他人的程序_裸机程序如何驱动硬件?
  2. 【Android 安装包优化】Android 中使用 SVG 图片 ( Android 5.0 以下的矢量图方案 | 矢量图生成为 PNG 图片 )
  3. Thinking in Java 源代码 source code 在IDEA上运行
  4. 手机java软件_浅谈软件开发就业前景
  5. Web开发秘方(WEB DEVELOPMENT RECIPES)[47.5MB] PDF扫描版
  6. 进程VS线程---操作类型
  7. 【动态规划】ST算法解决区间最值询问问题(RMQ问题)
  8. 开源项目之Windows读取Ext4分区的工具 Ext2Read
  9. 第十节 直流变直流电路(DCDC)芯片选型
  10. 计算机在投资审计中应用方法,计算机辅助审计技术在投资审计中的应用研究(原稿)_0...
  11. mysql初始化密码_MySQL5.7初始密码查看及重置
  12. 690-文件管理和文件系统
  13. iPhone模拟器消失 解决办法
  14. 福晟集团用创新理念引领发展新趋势
  15. 使用python scrapy爬取全国小区信息(包括小区价格,经纬度,面积,户数等),并保存到mysql和excel
  16. Setting 模块之辅助功能
  17. 如何备份Chrome浏览器收藏夹
  18. hp ilo 服务器 hpssacli 做 raid
  19. Visual Studio 编程技巧
  20. 岛屿的个数java_LeetCode 200:岛屿数量 Number of Islands

热门文章

  1. java如何获取手机号码归属地_在java中如何根据手机号查询号码归属地
  2. Microsoft .NET Framework 3.5 sp1离线安装(DotNetFX35)
  3. 【登录及鉴权】-盘点那些主流的开源登录及权限认证框架 (上)
  4. Html5手机端网址封装成微信小程序的教程
  5. 1. A星算法解决修道士与野人问题
  6. 修道士和野人java_修道士与野人问题(BFS广度搜索)
  7. 白菜心发布博客啦!!!
  8. Markdown基本使用
  9. OpenGL透视投影
  10. [文档+源码]SpringBoot+Mysql实现的宠物在线商城宠物交易平台宠物店源码