选项菜单和子菜单(SubMenu)

/*
 * 选项菜单和子菜单(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.

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值