链接地址:http://www.cnblogs.com/lknlfy/archive/2012/02/28/2372101.html

一、概述

Menu,简单来理解就是当你按下手机的“menu”键时所弹出来的窗口,它被广泛应用着,几乎在每个应用中都有它的身影。

二、要求

用两种方式实现菜单功能。

三、实现

新建工程MyMenu,修改/res/layout/main.xml文件,主要是修改了里面的TextView,完整的main.xml文件如下:

 1 <?xml version="1.0" encoding="utf-8"?>
2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
3 android:layout_width="fill_parent"
4 android:layout_height="fill_parent"
5 android:orientation="vertical" >
6
7 <TextView
8 android:layout_width="fill_parent"
9 android:layout_height="wrap_content"
10 android:text="这是一个菜单测试程序"
11 android:gravity="center_horizontal"
12 />
13
14 </LinearLayout>

接着,修改MyMenuActivity.java文件,主要是覆写了onCreateOptionsMenu()和onOptionsItemSelected()这两个方法,在onCreateOptionsMenu()方法里增加7个选项,比较简单,完整的内容如下:

 1 package com.nan.menu;
2
3 import android.app.Activity;
4 import android.os.Bundle;
5 import android.view.Menu;
6 import android.view.MenuItem;
7 import android.widget.Toast;
8
9 public class MyMenuActivity extends Activity
10 {
11 /** Called when the activity is first created. */
12 @Override
13 public void onCreate(Bundle savedInstanceState)
14 {
15 super.onCreate(savedInstanceState);
16 setContentView(R.layout.main);
17
18 }
19
20 @Override
21 //当"menu"按钮被按下时执行这个函数
22 public boolean onCreateOptionsMenu(Menu menu)
23 {
24 menu.add(0, 0, Menu.NONE, "菜单").setIcon(android.R.drawable.btn_star);
25 menu.add(0, 1, Menu.NONE, "菜单").setIcon(android.R.drawable.btn_star);
26 menu.add(0, 2, Menu.NONE, "菜单").setIcon(android.R.drawable.btn_star);
27 menu.add(0, 3, Menu.NONE, "菜单").setIcon(android.R.drawable.btn_star);
28 menu.add(0, 4, Menu.NONE, "菜单").setIcon(android.R.drawable.btn_star);
29 menu.add(0, 5, Menu.NONE, "菜单").setIcon(android.R.drawable.btn_star);
30 menu.add(0, 6, Menu.NONE, "菜单").setIcon(android.R.drawable.btn_star);
31
32 return super.onCreateOptionsMenu(menu);
33 }
34
35
36 //当菜单中某项被选中时执行这个函数
37 @Override
38 public boolean onOptionsItemSelected(MenuItem item)
39 {
40 switch(item.getItemId())
41 {
42 case 0:displayToast("第0项被选中");break;
43 case 1:displayToast("第1项被选中");break;
44 case 2:displayToast("第2项被选中");break;
45 case 3:displayToast("第3项被选中");break;
46 case 4:displayToast("第4项被选中");break;
47 case 5:displayToast("第5项被选中");break;
48 case 6:displayToast("第6项被选中");break;
49
50 }
51
52 return super.onOptionsItemSelected(item);
53 }
54
55 /*
56 @Override
57 public boolean onCreateOptionsMenu(Menu menu)
58 {
59 MenuInflater inflater = getMenuInflater();
60 inflater.inflate(R.menu.menu, menu);
61 return super.onCreateOptionsMenu(menu);
62 }
63
64 @Override
65 public boolean onOptionsItemSelected(MenuItem item)
66 {
67 int item_id = item.getItemId();
68
69 switch(item_id)
70 {
71 case R.id.mlist:
72 {}
73 }
74 return super.onOptionsItemSelected(item);
75 }
76 */
77
78
79
80 //显示Toast函数
81 private void displayToast(String s)
82 {
83 Toast.makeText(this, s, Toast.LENGTH_LONG).show();
84 }
85
86 }

注释那段内容后面再解释,先运行这个程序看看:

点击"menu"按键,可以看到弹出了一个菜单窗口,如下:

接着,随便点击一项,效果如下:

好了。这是实现的一种方法,第二种实现方法就是把上面程序中的第55~76行的注释取消掉,然后将第19~54行加上注释,重新运行程序,OK。

附:

可以看到用第一种方法创建菜单最多只可以显示5项,第6项变成“more”,其他选项就在"more"里面,而第二种方法则可以用我们自己定义的布局来作为菜单选项,那么就变得灵活多了。

 

Android应用开发基础篇(10)-----Menu(菜单)的更多相关文章

  1. Android应用开发基础篇(1)-----Button

    Android应用开发基础篇(1)-----Button   一.概述        Button,顾名思义就是按钮的意思,它主要的功能是响应用户按下按钮时的动作. 二.应用      新建一个工程, ...

  2. Android应用开发基础篇(3)-----ListView

    一.概述 ListView是一个列表显示控件,它的应用非常广泛,在很多应用程序中都可以看到它的身影,比如来电通,网易新闻等等,特别是QQ.因此非常有必要熟练掌握它. 二.要求 能够利用ListView ...

  3. Android应用开发基础篇(4)-----TabHost(选项卡)

    一.概述 TabHost是一种用来显示标签的组件,不清楚?看一下来电通这个应用就知道了.这个组件用起来与其他组件不太一样,它需要继承TabActivity这个类,还有它的布局文件与我们平时用的也有些不 ...

  4. Android应用开发基础篇(12)-----Socket通信

    链接地址:http://www.cnblogs.com/lknlfy/archive/2012/03/03/2378669.html 一.概述 网络通信无论在手机还是其他设备上都应用得非常广泛,因此掌 ...

  5. Android应用开发基础篇(14)-----自定义标题栏

    一.概述 每一个应用程序默认的标题栏(注意与状态栏的区别)只有一行文字(新建工程时的名字),而且颜色.大小等都是固定的,给人的感觉比较单调.但当程序需要美化的时候,那么修改标题栏是就是其中一项内容,虽 ...

  6. Android应用开发基础篇(12)-----Socket通信(转载)

    转自:http://www.devdiv.com/android_socket_-blog-258060-10594.html 一.概述 网络通信无论在手机还是其他设备上都应用得非常广泛,因此掌握网络 ...

  7. Android应用开发基础篇(2)-----Notification(状态栏通知)

    一.概述      Notification这个部件的功能是在状态栏里显示消息提醒,比如有未读的短信或者是未接的电话,那么状态栏里都会有显示,更或者是从某个应用(比如QQ,酷我音乐等等)里按Home键 ...

  8. Android应用开发基础篇(16)-----ScaleGestureDetector(缩放手势检测)

    链接地址:http://www.cnblogs.com/lknlfy/archive/2012/03/11/2390274.html 一.概述 ScaleGestureDetector这个类是专门用来 ...

  9. Android应用开发基础篇(15)-----URL(获取指定网址里的图片)

    链接地址:http://www.cnblogs.com/lknlfy/archive/2012/03/10/2389190.html 一.概述 URL,说白了就是一个网络地址(网址),通常一个网址里包 ...

随机推荐

  1. Linux LVM硬盘管理及LVM分区扩容

    LVM磁盘管理 一.LVM简介... 1 二. LVM基本术语... 2 三. 安装LVM... 3 四. 创建和管理LVM... 4 2. 创建PV.. 6 3. 创建VG.. 7 4. 创建LV. ...

  2. ios jsbrige

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

  3. C语言入门(8)——形参与实参

    对于带参数的函数,我们需要在函数定义中指明参数的个数和每个参数的类型,定义参数就像定义变量一样,需要为每个参数指明类型,并起一个符合标识符命名规则的名字.例如: #include <stdio. ...

  4. Sublime Text 3:3114的安装(目前最新),插件emmet的安装

    随便一些好了. 直接英文版吧,建议不要找中文版,学习英语不是? https://www.sublimetext.com/3   下载 https://github.com/wbond/package_ ...

  5. java调试工具

    jps当前用户已启动的java进程信息,信息包括进程号和简短的进程command. jstat输出指定 jvm 实例的特定统计量:统计量:-class-compiler-gc-gccapacity-g ...

  6. ASPxGridView-为每行添加序号

    添加一个新的非绑定列,使用CustomColumnDisplayText事件来分配序号给该列 <dx:GridViewDataTextColumn Caption="序号" ...

  7. 关于 WP上应用调试时报错“指定的通信资源(端口)”已由另一个应用程序使用 问题

    问题来源 碰到这个问题是调试wp7项目的时候,之前因为安装的是wp8.0的sdk 包括wp7.5所以wp7的也能用,后来不知道怎么回事wp7项目就不能调试了总是显示启动而不是 device或者是虚拟机 ...

  8. Unity 4.2.0 官方最新破解版(Unity3D 最新破解版,3D游戏开发工具和游戏引擎套件)

    Unity是一款跨平台的游戏开发工具,从一开始就被设计成易于使用的产品.作为一个完全集成的专业级应用,Unity还包含了价值数百万美元的功能强大的游戏引擎.Unity作为一个游戏开发工具,它的设计主旨 ...

  9. php以fastCGI的方式运行在iis下,遇到的文件系统权限问题及解决方法

    今天准备将一个php demo放在IIS下运行,网站在IIS下的配置是这样的: 应用程序池是集成模式下的.net framework 2.0(2.0或4.0没什么关系,因为php以fastCGI的方式 ...

  10. 尼康D5100使用设置及技巧,同样也适用尼康D5200

    尼康D5100使用设置及技巧,同样也适用尼康D5200,希望对新手能有点帮助. 一.设置 1.优化校准:可以在menu菜单中找到它,一般使用"标准"就可以,建议将"标准& ...