欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android三种菜单实例分析

程序员文章站 2023-02-02 11:07:12
本文实例讲述了android的三种菜单。分享给大家供大家参考。具体分析如下: android的菜单分为三种类型:选项菜单(option menu)、上下文菜单(conte...

本文实例讲述了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程序设计有所帮助。