Android三种菜单实例分析
本文实例讲述了android的三种菜单。分享给大家供大家参考。具体分析如下:
android的菜单分为三种类型:选项菜单(option menu)、上下文菜单(context menu)、子菜单(sub menu)
一.选项菜单
当用户单击设备上的菜单按钮(menu),触发事件弹出的菜单就是选项菜单。选项菜单最多只有六个,超过六个第六个就会自动显示 更多 选项来展示显示。
创建方法:
1、覆盖activity的oncreateoptionsmenu(menu menu)方法,当我们第一次打开菜单时调用。
2、调用menu的add()方法添加菜单项(menuitem),可以调用menuitem的seticon()方法为菜单项设置图标。
3、当菜单项(menuitem)被选中时,覆盖acitivy的onoptionsmenuselected()方法响应事件。
二、上下文菜单
当用户长按activity页面时,弹出的菜单我们称为上下文菜单。我们经常在windows中用鼠标右键单击弹出的菜单就是上下文菜单。
1、覆盖activity的oncreatecontextmenu()方法,调用menu的add方法添加菜单项menuitem
2、覆盖oncontextitemselected()方法,响应菜单单击事件
3、调用registerforcontextmenu()方法,为视图注册上下文菜单
三、子菜单
子菜单就是将相同功能的分组进行多级显示的一种菜单,比如,windows的“文件”菜单中就有“新建”,“打开”,“关闭”等子菜单。
创建子菜单的方法
1、覆盖activity的oncreateoptionsmenu()方法,调用menu的addsubmenu()方法添加子菜单项
2、调用submenu的add()饭饭,添加子菜单项
3、覆盖oncreateitemselected()方法,响应菜单单击事件
public class main extends activity { // 菜单项id // first为menu类中的整形常量 private static final int item1 = menu.first; private static final int item2 = menu.first + 1; private static final int item3 = menu.first + 2; private static final int item4 = menu.first + 3; private static final int item5 = menu.first + 4; private static final int item6 = menu.first + 5; private static final int item7 = menu.first + 6; textview mytv; @override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); mytv = (textview) findviewbyid(r.id.mytv); // 此时为mytv设置上下文菜单,长按textview时响应函数 registerforcontextmenu(mytv); } @override // 点击菜单按钮响应的事件 public boolean oncreateoptionsmenu(menu menu) { /* 一下代码为选项菜单测试 // 添加菜单项 // public abstract menuitemadd(int groupid, int itemid, int order, charsequence title) // 菜单所在的group,菜单的id,排列顺序,显示的文字 // add()方法返回一个menuitem对象。而seticon是menuitem的方法 menu.add(0, item1, 0, "开始").seticon(r.drawable.ic_launcher); menu.add(0, item2, 0, "开始1"); menu.add(1, item3, 0, "开始2"); menu.add(1, item4, 0, "开始3"); menu.add(1, item5, 0, "开始4"); // menu.add(0, item6, 0, "开始5"); // menu.add(0, item7, 0, "开始6"); */ /** * 以下代码为添加子菜单的测试代码 */ // 添加子菜单 submenu subfile = menu.addsubmenu("文件"); submenu editfile = menu.addsubmenu("编辑"); // 为子菜单添加菜单项 subfile.add(0, item1, 0, "新建"); subfile.add(0, item2, 0, "打开"); return true; } @override // 菜单被选中时触发的事件 public boolean onoptionsitemselected(menuitem item) { /* // 在此说明一下,menu相当于一个容器,而menuitem相当于容器中容纳的东西 switch(item.getitemid()) { case item1: // 设置activity的title settitle("开始游戏1"); break; case item2: settitle("开始游戏2"); break; case item3: settitle("开始游戏3"); break; case item4: settitle("开始游戏4"); break; case item5: settitle("开始游戏5"); break; case item6: settitle("开始游戏6"); break; case item7: settitle("开始游戏7"); break; } */ /** * 子菜单项响应代码 */ switch(item.getitemid()) { case item1: // 设置activity的title settitle("新建文件"); break; case item2: settitle("打开文件"); break; } return true; } @override // 创建上下文菜单 public void oncreatecontextmenu(contextmenu menu, view v, contextmenuinfo menuinfo) { // 向上下文菜单中添加菜单项 // 注意此处的menu是contextmenu menu.add(0, item1, 0, "红色背景"); menu.add(0, item2, 0, "绿色背景"); menu.add(1, item3, 0, "白色背景"); } @override public boolean oncontextitemselected(menuitem item) { switch(item.getitemid()) { case item1: mytv.setbackgroundcolor(color.red); break; case item2: mytv.setbackgroundcolor(color.green); break; case item3: mytv.setbackgroundcolor(color.white); break; } return true; } }
希望本文所述对大家的android程序设计有所帮助。
上一篇: 8.智能快递柜SDK(联网型锁板)
下一篇: 烧烤花菜的制作方法