Android应用开发基础篇(10)-----Menu(菜单)
链接地址: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(菜单)的更多相关文章
- Android应用开发基础篇(1)-----Button
Android应用开发基础篇(1)-----Button 一.概述 Button,顾名思义就是按钮的意思,它主要的功能是响应用户按下按钮时的动作. 二.应用 新建一个工程, ...
- Android应用开发基础篇(3)-----ListView
一.概述 ListView是一个列表显示控件,它的应用非常广泛,在很多应用程序中都可以看到它的身影,比如来电通,网易新闻等等,特别是QQ.因此非常有必要熟练掌握它. 二.要求 能够利用ListView ...
- Android应用开发基础篇(4)-----TabHost(选项卡)
一.概述 TabHost是一种用来显示标签的组件,不清楚?看一下来电通这个应用就知道了.这个组件用起来与其他组件不太一样,它需要继承TabActivity这个类,还有它的布局文件与我们平时用的也有些不 ...
- Android应用开发基础篇(12)-----Socket通信
链接地址:http://www.cnblogs.com/lknlfy/archive/2012/03/03/2378669.html 一.概述 网络通信无论在手机还是其他设备上都应用得非常广泛,因此掌 ...
- Android应用开发基础篇(14)-----自定义标题栏
一.概述 每一个应用程序默认的标题栏(注意与状态栏的区别)只有一行文字(新建工程时的名字),而且颜色.大小等都是固定的,给人的感觉比较单调.但当程序需要美化的时候,那么修改标题栏是就是其中一项内容,虽 ...
- Android应用开发基础篇(12)-----Socket通信(转载)
转自:http://www.devdiv.com/android_socket_-blog-258060-10594.html 一.概述 网络通信无论在手机还是其他设备上都应用得非常广泛,因此掌握网络 ...
- Android应用开发基础篇(2)-----Notification(状态栏通知)
一.概述 Notification这个部件的功能是在状态栏里显示消息提醒,比如有未读的短信或者是未接的电话,那么状态栏里都会有显示,更或者是从某个应用(比如QQ,酷我音乐等等)里按Home键 ...
- Android应用开发基础篇(16)-----ScaleGestureDetector(缩放手势检测)
链接地址:http://www.cnblogs.com/lknlfy/archive/2012/03/11/2390274.html 一.概述 ScaleGestureDetector这个类是专门用来 ...
- Android应用开发基础篇(15)-----URL(获取指定网址里的图片)
链接地址:http://www.cnblogs.com/lknlfy/archive/2012/03/10/2389190.html 一.概述 URL,说白了就是一个网络地址(网址),通常一个网址里包 ...
随机推荐
- jQuery.fn和jQuery.prototype jquery.extend() jquery.fn.extend()区别介绍
这里的 jQuery , jQuery.fn , jQuery,fn,init ,jQuery,prototype 都代表什么. 来看下jQuery的源码是怎么样定义的: (function( win ...
- stack的应用
STL除了给我们提供了一些容器(container)以外,还给我们提供了几个容器适配器(container adapters),stack便是其中之一 看过STL源码的人都知道,stack其实是内部封 ...
- git搭建服务器
搭建Git服务器 在远程仓库一节中,我们讲了远程仓库实际上和本地仓库没啥不同,纯粹为了7x24小时开机并交换大家的修改. GitHub就是一个免费托管开源代码的远程仓库.但是对于某些视源代码如生命的商 ...
- mciSendString用法
使用MCI API,源文件中需要包含头文件 Mmsystem.h,在Project->Settings->Link->Object/libray module中加入库 Winmm.l ...
- nodejs中使用递归案例
var http = require('http'); //1.正常逻辑第一步正常请求,动作进行一次的方法: function seqRequest(i,limit){ var req = http. ...
- Android解析XML
在Android平台上可以使用Simple API for XML(SAX) . Document Object Model(DOM)和Android附带的pull解析器解析XML文件. 下面是本例子 ...
- 12 款最好的 Bootstrap 设计工具
作为一位设计师,会经常追寻新鲜有趣的设计工具,这些工具会提高工作的效率,使得工作更有效, 最重要的是使工作变得更方便.非常肯定的说,随着日益增长的工具和应用的数量,设计和开发变得越来越简单了. 其中最 ...
- Ajax或JS动态添加的元素,Jquery效果不起作用
问题: 最近在做一个Ajax分页的功能,遇到一个问题 一开始jquery效果是可用的,但是,ajax执行一次之后,jquery效果就无效了. 解决办法: 可以添加live事件来解决 W3C关于live ...
- Hql中占位符(转)
在新的Hibernate 4版本中,对于Hql有一点点改变,如果你还是按照以前的方式去编写HQL并且用了以下占位符的方式,就会得到一个警告. 参考资料:https://hibernate.atlass ...
- BZOJ 1415: [Noi2005]聪聪和可可( 最短路 + 期望dp )
用最短路暴力搞出s(i, j)表示聪聪在i, 可可在j处时聪聪会走的路线. 然后就可以dp了, dp(i, j) = [ dp(s(s(i,j), j), j) + Σdp(s(s(i,j), j), ...