Android子菜单和选项菜单与上下文菜单的实现


菜单在Android开发中必不可少,可是要怎么实现各种菜单呢?是不是很头疼呢?下面我就来介绍一下:

1. 选项菜单和子菜单的实现

选项菜单:最常规的菜单,Android中把它叫做option menu。选项菜单最多只能显示6个菜单项,超过6个时,第6个菜单项会被系统替换为一个叫“更多”的子菜单,原来显示不下的菜单项都作为“更多”菜单的子菜单项。

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

步骤1:生成子菜单和选项菜单。创建一个名为“myMenu”的Android Project。在MyMenuActivity类中,右单击Source→Override/Implement Methods。通过onCreateOptionsMenu()方法来生成选项菜单,代码如下:

    public boolean onCreateOptionsMenu(Menu menu) {   //生成选项菜单
// TODO Auto-generated method stub
super.onCreateOptionsMenu(menu); // 调用父类方法来加入系统菜单
menu.add(1,1,1,"分享");
menu.add(1,2,2,"剪切"); //添加菜单项
menu.add(1,3,3,"删除");
menu.add(1,4,4,"编辑");
menu.add(1,5,5,"旋转");
menu.add(1,6,6,"标注");
menu.add(1,7,7,"详细信息"); //menu.add(int groupId, int itemId, int order, CharSequence title);
menu.add(1,8,8,"设为壁纸");
SubMenu submenu=menu.addSubMenu("系统设置");//可以带子菜单的菜单项
submenu.add(1,1,1,"显示设置");
submenu.add(1,2,2,"高级设置");
submenu.add(1,3,3,"网络设置");
submenu.add(1,4,4,"安全设置");
return true;
}

步骤2:响应菜单。onOptionsItemSelected(MenuItem),每当有菜单项被点击时,android就会调用该方法,并传入被点击菜单项。

public boolean onOptionsItemSelected(MenuItem item) {   //响应菜单
// TODO Auto-generated method stub
b1.setText(item.getTitle()); //点击了哪个菜单项,b1就显示哪个菜单项的title,
return true;
}

2. 上下文菜单的实现

上下文菜单:Android中长按视图控件后出现的菜单,windows点击右键弹出的菜单即上下文菜单。

步骤1:注册上下文菜单

public class MyMenuActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
b1=(Button) findViewById(R.id.b1); //注册按钮b1
this.registerForContextMenu(b1); //注册上下文菜单
}
Button b1;

步骤2:生成上下文菜单

public void onCreateContextMenu(ContextMenu menu, View v,    //生成上下文菜单
ContextMenuInfo menuInfo) {
// TODO Auto-generated method stub
if(v.getId()==R.id.b1)
{
menu.clear(); //清空上下文菜单(一些默认的菜单项)
menu.setHeaderTitle("文件操作"); //上下文菜单的标题
menu.add(0, 1, Menu.NONE, "发送"); //添加上下文菜单项
menu.add(0, 2, Menu.NONE, "标记为重要");
menu.add(0, 3, Menu.NONE, "重命名");
menu.add(0, 4, Menu.NONE, "删除");
}
}

步骤2:响应上下文菜单

    public boolean onContextItemSelected(MenuItem item) {  //响应上下文菜单
// TODO Auto-generated method stub
t1.setText(item.getTitle());
return true;
}

感悟

在没有写之前感觉满肚了想写了,思路很清晰。可到了写的时候,思路变得混乱了(也许是我没有集中精力吧)。不过还是完成了,有写的不对的地方亲们一定要指出来喔!

http://blog.csdn.net/dyllove98/article/details/8841769


Android的两种菜单的更多相关文章

  1. Unity调用Android的两种方式:其一、调用jar包

    unity在Android端开发的时候,免不了要调用Java:Unity可以通过两种方式来调用Android:一是调用jar.二是调用aar. 这篇文章主要讲解怎么从无到有的生成一个jar包,然后un ...

  2. Android ListView两种长按弹出菜单方式

    转自:http://www.cnblogs.com/yejiurui/p/3247527.html package com.wyl.download_demo; import java.util.Ar ...

  3. Android学习笔记(36):Android的两种事件处理方式

    Android提供了两种事件处理的方式:基于回调的事件处理 和 基于监听的事件处理. 我们来说的easy理解一点: (1)基于回调的事件处理就是继承GUI组件,并重写该组件的事件处理方法.除了一些特定 ...

  4. Android APP 两种用程序拨号的方式

    想在APP中添加一个拨号功能该怎样做呢?Android提供了两种方式,一种是ACTION_CALL方式直接拨打,另一种是ACTION_DIAL方式打开系统的拨号界面. 下面我们来做个小例子 首先需要在 ...

  5. android service两种启动方式

    android service的启动方式有以下两种: 1.Context.startService()方式启动,生命周期如下所示,启动时,startService->onCreate()-> ...

  6. Android的两种事件处理机制

    UI编程通常都会伴随事件处理,Android也不例外,它提供了两种方式的事件处理:基于回调的事件处理和基于监听器的事件处理. 对于基于监听器的事件处理而言,主要就是为Android界面组件绑定特定的事 ...

  7. Android中两种设置全屏的方法

    设置全屏的两种方法: 第一种:在配置文件里面配置: <?xml version="1.0" encoding="utf-8"?><manife ...

  8. Android中两种设置全屏或者无标题的方法

    在开发中我们经常需要把我们的应用设置为全屏或者不想要title, 这里是有两种方法的,一种是在代码中设置,另一种方法是在配置文件里改: 一.在代码中设置: package jason.tutor; i ...

  9. Android程序两种退出的方法

    两种程序退出的方法: Context的finish()方法: android.os.Process的killProcess()方法:(当程序isRegistered()失败,说明程序被修改过,调用ki ...

随机推荐

  1. Spreadsheet Calculator 电子表格计算器 (Uva 215)

    原题:https://uva.onlinejudge.org/external/2/215.pdf 有一个M x N的表格,每个单元格是个数字或者表达式.表达式由单元格编号和+ - 号组成 输出单元格 ...

  2. java的异常处理简介

    异常概述 任何一种程序设计语言设计的程序在运行时都有可能出现错误,例如除数为0,数组下标越界,要读写的文件不存在等等. 捕获错误最理想的是在编译期间,但有的错误只有在运行时才会发生. 对于这些错误,一 ...

  3. 【Python排序搜索基本算法】之Dijkstra算法

    Dijkstra算法和前一篇的Prim算法非常像,区别就在于Dijkstra算法向最短路径树(SPT)中添加顶点的时候,是按照ta与源点的距离顺序进行的.OSPF动态路由协议就是用的Dijkstra算 ...

  4. Java程序打包

    包名为 com.longneo.data,主程序入口为:com.longneo.data.AppMain 1.到工程目录下 /bin 执行 jar -cvf Demo.jar com 执行完之后会生成 ...

  5. windows 编程—— 宽字符集 与 Unicode

    目录: 从ASCII码 到 Unicode Windows 编程中的 "字符” 定义 (如何在windows下进行通用编码) 常用的通用函数,定义 (本文为学习<Programming ...

  6. Robotium API -- click/clickLong操作

           click&clickLong方法(点击/长按事件)        ArrayList<android.widget.TextView> clickList(int ...

  7. [小技巧] 打造属于 Dell XPS 13 (9350) 的专属 Windows 7 iso 镜像

    MacBook Air 13, Dell XPS 13 和 Thinkpad X1 Carbon 都是轻薄笔记本中设计优秀的典范,受到很多用户追捧. 不过对于 Windows 阵营的笔记本,最近有个坏 ...

  8. Linux设备驱动——内核定时器

    内核定时器使用 内核定时器是内核用来控制在未来某个时间点(基于jiffies)调度执行某个函数的一种机制,其实现位于 <Linux/timer.h> 和 kernel/timer.c 文件 ...

  9. 通知中心 NSNotificationCenter

    NSNotificationCenter 通知中心提供了一种在程序内广播信息的途径,一个NSNotificationCenter对象本质上是一个通知分发表(notification dispatch ...

  10. TODO、FIXME和XXX转载

    代码中特殊的注释技术——TODO.FIXME和XXX的用处 // TODO Auto-generated method stub