Android中的Menu功能菜单-OptionsMenu[选项菜单]
2011-04-21 10:06
465 查看
Android中的菜单是用户界面中最常见的元素,使用也很频繁,在Android中,菜单被分为3种,分别为选项菜单(OptionsMenu)、上下文菜单(ContextMenu)、子菜单(SubMenu)。本文先讲选项菜单(OptionsMenu)的使用。
Android手机上有个Menu按键,当Menu按下的时候,每个Activity都可以选择处理这一请求,在屏幕底部弹出一个菜单,这个菜单我们就叫做选项菜单(OptionsMenu),一般情况下,选项菜单最多能显示2排3个菜单选项。这些菜单项中可以设定图标,文字。菜单项如果多于6项,从第6项开始出现一个More选项,点击More才出现第六项以及以后的菜单项,这些菜单项也被称作Expanded Menus。
我们先浏览下效果图(如下):
![](http://hi.csdn.net/attachment/201104/21/0_1303350102UR81.gif)
我们要在Activity中除了覆盖 onCreate(Bundle savedInstanceState);方法外,也要覆盖onCreateOptionsMenu(Menu menu)和onOptionsItemSelected(MenuItem item)方法。代码如下:
package com.andy.test;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;
public class TestActivity extends Activity {
//定义Menu菜单选项的ItemId
final static int ONE = Menu.FIRST;
final static int TWO = Menu.FIRST+1;
final static int THREE = Menu.FIRST+2;
final static int FOUR = Menu.FIRST+3;
final static int FIVE = Menu.FIRST+4;
final static int SIX = Menu.FIRST+5;
final static int SEVEN = Menu.FIRST+6;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
//创建Menu菜单
public boolean onCreateOptionsMenu(Menu menu) {
menu.add(0, ONE, 0, "第一").setIcon(R.drawable.icon); //设置文字与图标
menu.add(0, TWO, 0, "第二");
menu.add(0, THREE, 0, "第三");
menu.add(0, FOUR, 0, "第四");
menu.add(0, FIVE, 0, "第五");
menu.add(0, SIX, 0, "第六");
menu.add(0, SEVEN, 0, "第七");
return super.onCreateOptionsMenu(menu);
}
//点击Menu菜单选项响应事件
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId()){
case 1:
Toast.makeText(this, "你点击了第一", Toast.LENGTH_SHORT).show();
break;
case 2:
Toast.makeText(this, "你点击了第二", Toast.LENGTH_SHORT).show();
break;
}
return super.onOptionsItemSelected(item);
}
//选项菜单被关闭事件,菜单被关闭有三种情形,menu按钮被再次点击、
//back按钮被点击或者用户选择了某一个菜单项
public void onOptionsMenuClosed(Menu menu) {
Toast.makeText(this, "你关闭了选项菜单", Toast.LENGTH_SHORT).show();
}
//菜单被显示之前的事件
public boolean onPrepareOptionsMenu(Menu menu) {
Toast.makeText(this,
"选项菜单显示之前onPrepareOptionsMenu方法会被调用",Toast.LENGTH_LONG).show();
//如果返回false,此方法就把用户点击menu的动作给消费了,
//onCreateOptionsMenu方法将不会被调用
return true;
}
}
注:如果我们想通过另外一种方式来实现和点击Menu键一样的功能,例如:点击Menu键时会弹出和隐藏选项菜单,如果我想通过点击某一个Button按钮来实现同样的功能呢?即通过调用系统的 openOptionsMenu(); 方法就OK了。
Android手机上有个Menu按键,当Menu按下的时候,每个Activity都可以选择处理这一请求,在屏幕底部弹出一个菜单,这个菜单我们就叫做选项菜单(OptionsMenu),一般情况下,选项菜单最多能显示2排3个菜单选项。这些菜单项中可以设定图标,文字。菜单项如果多于6项,从第6项开始出现一个More选项,点击More才出现第六项以及以后的菜单项,这些菜单项也被称作Expanded Menus。
我们先浏览下效果图(如下):
![](http://hi.csdn.net/attachment/201104/21/0_1303350102UR81.gif)
我们要在Activity中除了覆盖 onCreate(Bundle savedInstanceState);方法外,也要覆盖onCreateOptionsMenu(Menu menu)和onOptionsItemSelected(MenuItem item)方法。代码如下:
package com.andy.test;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;
public class TestActivity extends Activity {
//定义Menu菜单选项的ItemId
final static int ONE = Menu.FIRST;
final static int TWO = Menu.FIRST+1;
final static int THREE = Menu.FIRST+2;
final static int FOUR = Menu.FIRST+3;
final static int FIVE = Menu.FIRST+4;
final static int SIX = Menu.FIRST+5;
final static int SEVEN = Menu.FIRST+6;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
//创建Menu菜单
public boolean onCreateOptionsMenu(Menu menu) {
menu.add(0, ONE, 0, "第一").setIcon(R.drawable.icon); //设置文字与图标
menu.add(0, TWO, 0, "第二");
menu.add(0, THREE, 0, "第三");
menu.add(0, FOUR, 0, "第四");
menu.add(0, FIVE, 0, "第五");
menu.add(0, SIX, 0, "第六");
menu.add(0, SEVEN, 0, "第七");
return super.onCreateOptionsMenu(menu);
}
//点击Menu菜单选项响应事件
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId()){
case 1:
Toast.makeText(this, "你点击了第一", Toast.LENGTH_SHORT).show();
break;
case 2:
Toast.makeText(this, "你点击了第二", Toast.LENGTH_SHORT).show();
break;
}
return super.onOptionsItemSelected(item);
}
//选项菜单被关闭事件,菜单被关闭有三种情形,menu按钮被再次点击、
//back按钮被点击或者用户选择了某一个菜单项
public void onOptionsMenuClosed(Menu menu) {
Toast.makeText(this, "你关闭了选项菜单", Toast.LENGTH_SHORT).show();
}
//菜单被显示之前的事件
public boolean onPrepareOptionsMenu(Menu menu) {
Toast.makeText(this,
"选项菜单显示之前onPrepareOptionsMenu方法会被调用",Toast.LENGTH_LONG).show();
//如果返回false,此方法就把用户点击menu的动作给消费了,
//onCreateOptionsMenu方法将不会被调用
return true;
}
}
注:如果我们想通过另外一种方式来实现和点击Menu键一样的功能,例如:点击Menu键时会弹出和隐藏选项菜单,如果我想通过点击某一个Button按钮来实现同样的功能呢?即通过调用系统的 openOptionsMenu(); 方法就OK了。
相关文章推荐
- Android中的Menu功能菜单-OptionsMenu[选项菜单]
- Android开发--身高体重指数(BIM)计算--添加菜单(Menu)(菜单功能、创建菜单、处理选项动作)
- Android之Menu菜单 onCreateOptionsMenu使用Menu按键显示不了问题
- Android开发之Menu:OptionMenu(选项菜单)、ContextMenu(上下文菜单)、SubMenu(子菜单)
- eclipse 编写Android程序时,在menu添加菜单节点没有“Item”之类的选项
- Android开发:Menu选项菜单
- Android-menu键选项菜单的实现
- AndroidAnnotations——Handling options menu处理选项菜单
- 【Android】选项菜单optionsMenu
- 第43章、选项菜单OptionsMenu(从零开始学Android)
- 4、从头学Android之Menu选项菜单
- 【Android】Android中选项菜单(OptionMenu)的创建
- Android之Menu菜单 onCreateOptionsMenu使用Menu按键显示不了问题
- Android编程基础之Menu功能菜单设计实例
- Android基础教程(五)之-----Menu功能菜单设计
- Android基础教程(五)之-----Menu功能菜单设计
- Android onCreateOptionsMenu()创建菜单Menu详解
- android开发步步为营之29:选项菜单OptionsMenu的用法
- Android基础教程(五)之-----Menu功能菜单设计
- android 自定义menu菜单按键功能