首页 > 代码库 > 第四十一讲:Android之Menu菜单(二)

第四十一讲:Android之Menu菜单(二)

春蚕到死丝方尽,人至期颐亦不休。一息尚存须努力,留作青年好范畴。—— 吴玉章


本讲内容:子菜单 SubMenu

android中点击子菜单将弹出悬浮窗口显示子菜单项。子菜单不支持嵌套,即子菜单中不能再包括其他子菜单。


我们通过一个例子感受一下,代码的讲解都写在注释里了

下面是MainActivity.java主界面文件:

public class MainActivity extends Activity {
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

	}
//	你可以通过addSubMenu(int groupId, int itemId, int order, int titleRes)方法非常方便的创建和响应子菜单。
	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// 一个menu可以包括多个子菜单
		SubMenu subMenu=menu.addSubMenu(Menu.NONE, Menu.FIRST+1, Menu.NONE, "系统设置");
		 // 子菜单可以包括多个菜单项
		 MenuItem menuitem1 = subMenu.add(Menu.NONE, Menu.FIRST+1, 1, "显示设置");
		    subMenu.add(Menu.NONE, Menu.FIRST +2, 2, "网络设置");
		    subMenu.add(Menu.NONE, Menu.FIRST+3, 3, "高级设置");
		    subMenu.add(Menu.NONE, Menu.FIRST+4, 4, "安全设置");
		    
		 // 子菜单项不支持显示图标,这样做是没意义的,尽管不会报错!
		    menuitem1.setIcon(R.drawable.ic_launcher);
		  //但是子菜单本身是支持图标的
		    subMenu.setIcon(R.drawable.ic_launcher);
		return true;
	}
	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		return super.onOptionsItemSelected(item);
	}
}

下面是运行结果:



在上一讲我们再补充一个选项菜单 OptionsMenu 例子

下面是MainActivity.java主界面文件:

public class MainActivity extends Activity {
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
	}
	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// 添加4个菜单项,分成2组
		int group1 = 1;
		int group2 = 2;
		menu.add(group1, 1, 1, "item 1");
		menu.add(group1, 2, 2, "item 2");
		menu.add(group2, 3, 3, "item 3");
		menu.add(group2, 4, 4, "item 4");
		// 显示菜单

		//menu.removeGroup(group1); // 删除一组菜单
		menu.setGroupVisible(group2, true); // 设置一组菜单是否可见
		menu.setGroupEnabled(group2, true); // 设置一组菜单是否可点
		menu.setGroupCheckable(group2, true, true);
		; // 设置一组菜单的勾选情况
		return true;
	}
	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		switch (item.getItemId()) {
		case 1:
			Toast.makeText(this, "---1----", Toast.LENGTH_SHORT).show();
			break;
		case 2:
			Toast.makeText(this, "---2----", Toast.LENGTH_SHORT).show();
			break;
		case 3:
			Toast.makeText(this, "---3----", Toast.LENGTH_SHORT).show();
			break;
		case 4:
			Toast.makeText(this, "---4----", Toast.LENGTH_SHORT).show();
			break;
		default:
			 //对没有处理的事件,交给父类来处理
			return super.onOptionsItemSelected(item);
		}
		// 返回true表示处理完菜单项的事件,不需要将该事件继续传播下去了
		return true;
	}
}


下面是运行结果:



本讲到这里,谢谢大家!


第四十一讲:Android之Menu菜单(二)