在Android系统中,菜单可以分为三类:[color=red]选项菜单(Option Menu)[/color],[color=red]上下文菜单(Context Menu)[/color]以及[color=red]子菜单(Sub Menu)[/color]。
[size=medium][b]一.选项菜单(Option Menu)[/b][/size]
创建选项菜单的步骤:
[color=blue]1.覆盖Activity的onCreateOptionMenu(Menu menu)方法,当菜单第一次被打开时调用[/color]
2.调用Menu的add( )方法添加菜单项(MenuItem),同时可以调用MenuItem的setIcon( )方法来为菜单项设置图标
[color=red]3.当菜单项(MenuItem)被选择时,覆盖Activity的onOptionsItemSelected(MenuItem item)来响应事件[/color]
选项菜单的实例:
[color=red]效果图:[/color]
[img]http://dl2.iteye.com/upload/attachment/0115/7710/98f6def5-063c-3496-ba7e-2fc896cf0d79.jpg[/img]
[size=medium][b]二.上下文菜单(Context Menu)[/b][/size]
创建上下文菜单的步骤:
1.覆盖Activity的[color=red]onCreateContextMenu(Menu menu)[/color]方法,调用Menu的add( )方法添加菜单项(MenuItem).
2.覆盖Activity的o[color=red]onContextItemSelected(MenuItem item)[/color]来响应事件
3.调用[color=red]registerForContextMenu( )[/color]方法来为视图注册上下文菜单
上下文菜单的实例(按住“测试Context Menu”2秒,就会出现上下文菜单):
[b]效果图:[/b]
[img]http://dl2.iteye.com/upload/attachment/0115/7712/fcb4cbeb-27ba-35cb-817a-4b9a4b945a2c.jpg[/img]
[size=medium][b]三.子菜单(Sub Menu)[/b][/size]
创建子菜单的步骤:
1.覆盖Activity的[color=red]onCreateOptionMenu(Menu menu)[/color]方法,调用Menu的addSubMenu( )方法来添加子菜单(Sub Menu)
2.调用SubMenu的add( )方法来添加子菜单(Sub Menu)
3.覆盖onContextItemSelect( )方法来响应菜单单击事件
[color=red]子菜单的实例:[/color]
效果图:
[img]http://dl2.iteye.com/upload/attachment/0115/7740/460d370b-5ae6-3c68-a033-f6ea629fd910.jpg[/img]
[color=red][b]注:menu.add的方法中的参数:[/b][/color]
1.int类型的group ID参数,代表的是[color=red]组概念[/color],你可以将几个菜单项归为一组,以便更好的以组的方式管理你的菜单按钮。可以用到的方法有:
removeGroup(id)
setGroupCheckable(id, checkable, exclusive)
setGroupEnabled(id,boolean enabled)
setGroupVisible(id,visible)
2.int类型的item ID参数,代表的是项目编号。[color=blue]这个参数非常重要,一个item ID对应一个Menu中的选项。在后面使用菜单的时候,就是靠这个item ID来判断,你选中的是哪个选项。[/color]
3.int类型的order ID参数,[color=red]代表的是菜单项的显示顺序[/color]。默认是0,表示菜单的显示顺序就是按照add的顺序来显示。
4.String类型的title参数,[color=red]表示选项中显示的文字[/color]。
转自:[url]http://liangruijun.blog.51cto.com/3061169/641275/[/url]
[size=medium][b]一.选项菜单(Option Menu)[/b][/size]
创建选项菜单的步骤:
[color=blue]1.覆盖Activity的onCreateOptionMenu(Menu menu)方法,当菜单第一次被打开时调用[/color]
2.调用Menu的add( )方法添加菜单项(MenuItem),同时可以调用MenuItem的setIcon( )方法来为菜单项设置图标
[color=red]3.当菜单项(MenuItem)被选择时,覆盖Activity的onOptionsItemSelected(MenuItem item)来响应事件[/color]
选项菜单的实例:
package com.android.menu.activity;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
public class OptionMenuActivity extends Activity {
//声明菜单项常量
private static final int ITEM_1 = Menu.FIRST;
private static final int ITEM_2 = Menu.FIRST+1;
private static final int ITEM_3 = Menu.FIRST+2;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
//覆盖onCreateOptionsMenu(Menu menu)来添加菜单项
public boolean onCreateOptionsMenu(Menu menu) {
//android.R使用的是系统自带的图标
menu.add(0, ITEM_1, 0, "开始").setIcon(android.R.drawable.ic_media_play);
menu.add(0, ITEM_2, 0, "帮助").setIcon(android.R.drawable.ic_menu_help);
menu.add(0, ITEM_3, 0, "退出").setIcon(android.R.drawable.ic_menu_close_clear_cancel);
return true;
}
//覆盖onOptionsItemSelected(MenuItem item)来响应菜单选项被单击事件
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case ITEM_1:
setTitle("开始游戏!");
break;
case ITEM_2:
setTitle("查看帮助!");
break;
case ITEM_3:
setTitle("退出游戏!");
break;
}
return true;
}
}
[color=red]效果图:[/color]
[img]http://dl2.iteye.com/upload/attachment/0115/7710/98f6def5-063c-3496-ba7e-2fc896cf0d79.jpg[/img]
[size=medium][b]二.上下文菜单(Context Menu)[/b][/size]
创建上下文菜单的步骤:
1.覆盖Activity的[color=red]onCreateContextMenu(Menu menu)[/color]方法,调用Menu的add( )方法添加菜单项(MenuItem).
2.覆盖Activity的o[color=red]onContextItemSelected(MenuItem item)[/color]来响应事件
3.调用[color=red]registerForContextMenu( )[/color]方法来为视图注册上下文菜单
上下文菜单的实例(按住“测试Context Menu”2秒,就会出现上下文菜单):
package com.android.context.activity;
import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ContextMenu.ContextMenuInfo;
import android.widget.TextView;
public class ContextMenuActivity extends Activity {
private static final int ITME_1 = Menu.FIRST;
private static final int ITME_2 = Menu.FIRST+1;
private static final int ITME_3 = Menu.FIRST+2;
private TextView text;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
text = (TextView)findViewById(R.id.TextView_1);
//调用registerForContextMenu()来注册上下文菜单
registerForContextMenu(text);
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
menu.add(0, ITME_1, 0, "红色背景");
menu.add(0, ITME_2, 0, "蓝色背景");
menu.add(0, ITME_3, 0, "白色背景");
}
@Override
public boolean onContextItemSelected(MenuItem item) {
switch (item.getItemId()) {
case ITME_1:
//设置TextView的背景颜色
text.setBackgroundColor(Color.RED);
break;
case ITME_2:
text.setBackgroundColor(Color.BLUE);
break;
case ITME_3:
text.setBackgroundColor(Color.WHITE);
break;
}
return true;
}
}
[b]效果图:[/b]
[img]http://dl2.iteye.com/upload/attachment/0115/7712/fcb4cbeb-27ba-35cb-817a-4b9a4b945a2c.jpg[/img]
[size=medium][b]三.子菜单(Sub Menu)[/b][/size]
创建子菜单的步骤:
1.覆盖Activity的[color=red]onCreateOptionMenu(Menu menu)[/color]方法,调用Menu的addSubMenu( )方法来添加子菜单(Sub Menu)
2.调用SubMenu的add( )方法来添加子菜单(Sub Menu)
3.覆盖onContextItemSelect( )方法来响应菜单单击事件
[color=red]子菜单的实例:[/color]
package com.android.sub.activity;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.SubMenu;
public class SubMenuActivity extends Activity {
private static final int ITEM_1 = Menu.FIRST;
private static final int ITEM_2 = Menu.FIRST+1;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
//覆盖onCreateOptionsMenu(Menu menu)方法,添加子菜单项
public boolean onCreateOptionsMenu(Menu menu) {
SubMenu ad = menu.addSubMenu("添加").setIcon(android.R.drawable.ic_menu_add);
SubMenu re = menu.addSubMenu("关闭").setIcon(android.R.drawable.ic_menu_close_clear_cancel);
ad.add(0, ITEM_1, 0, "文件");
ad.add(0, ITEM_2, 0, "图片");
return true;
}
//覆盖onOptionsItemSelected(MenuItem item),响应菜单选项被单击事件
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case ITEM_1:
setTitle("添加文件!");
break;
case ITEM_2:
setTitle("添加图片!");
break;
}
return true;
}
}
效果图:
[img]http://dl2.iteye.com/upload/attachment/0115/7740/460d370b-5ae6-3c68-a033-f6ea629fd910.jpg[/img]
[color=red][b]注:menu.add的方法中的参数:[/b][/color]
1.int类型的group ID参数,代表的是[color=red]组概念[/color],你可以将几个菜单项归为一组,以便更好的以组的方式管理你的菜单按钮。可以用到的方法有:
removeGroup(id)
setGroupCheckable(id, checkable, exclusive)
setGroupEnabled(id,boolean enabled)
setGroupVisible(id,visible)
2.int类型的item ID参数,代表的是项目编号。[color=blue]这个参数非常重要,一个item ID对应一个Menu中的选项。在后面使用菜单的时候,就是靠这个item ID来判断,你选中的是哪个选项。[/color]
3.int类型的order ID参数,[color=red]代表的是菜单项的显示顺序[/color]。默认是0,表示菜单的显示顺序就是按照add的顺序来显示。
4.String类型的title参数,[color=red]表示选项中显示的文字[/color]。
转自:[url]http://liangruijun.blog.51cto.com/3061169/641275/[/url]