春蚕到死丝方尽,人至期颐亦不休。一息尚存须努力,留作青年好范畴。—— 吴玉章
本讲内容:子菜单 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;
}
}
本讲到这里,谢谢大家!