android系统里面有3种类型的菜单,Android开发学习之3大类菜单

在Android系统中,菜单可以分为三类:选项菜单(Option Menu),上下文菜单(Context Menu)以及子菜单(Sub Menu)。

一.选项菜单(Option Menu)

创建选项菜单的步骤:

1.覆盖Activity的onCreateOptionMenu(Menu menu)方法,当菜单第一次被打开时调用

2.调用Menu的add( )方法添加菜单项(MenuItem),同时可以调用MenuItem的setIcon( )方法来为菜单项设置图标

3.当菜单项(MenuItem)被选择时,覆盖Activity的onOptionsItemSelected(MenuItem item)来响应事件

选项菜单的实例:

packagecom.android.menu.activity;

importandroid.app.Activity;

importandroid.os.Bundle;

importandroid.view.Menu;

importandroid.view.MenuItem;

publicclassOptionMenuActivityextendsActivity {

//声明菜单项常量

privatestaticfinalintITEM_1 = Menu.FIRST;

privatestaticfinalintITEM_2 = Menu.FIRST+1;

privatestaticfinalintITEM_3 = Menu.FIRST+2;

publicvoidonCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

}

//覆盖onCreateOptionsMenu(Menu menu)来添加菜单项

publicbooleanonCreateOptionsMenu(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);

returntrue;

}

//覆盖onOptionsItemSelected(MenuItem item)来响应菜单选项被单击事件

publicbooleanonOptionsItemSelected(MenuItem item) {

switch(item.getItemId()) {

caseITEM_1:

setTitle("开始游戏!");

break;

caseITEM_2:

setTitle("查看帮助!");

break;

caseITEM_3:

setTitle("退出游戏!");

break;

}

returntrue;

}

}

效果图:

130557155.jpg

二.上下文菜单(Context Menu)

创建上下文菜单的步骤:

1.覆盖Activity的onCreateOptionMenu(Menu menu)方法,调用Menu的add( )方法添加菜单项(MenuItem).

2.覆盖Activity的onOptionsItemSelected(MenuItem item)来响应事件

3.调用registerForContextMenu( )方法来为视图注册上下文菜单

上下文菜单的实例(按住“测试Context Menu”2秒,就会出现上下文菜单):

packagecom.android.context.activity;

importandroid.app.Activity;

importandroid.graphics.Color;

importandroid.os.Bundle;

importandroid.view.ContextMenu;

importandroid.view.Menu;

importandroid.view.MenuItem;

importandroid.view.View;

importandroid.view.ContextMenu.ContextMenuInfo;

importandroid.widget.TextView;

publicclassContextMenuActivityextendsActivity {

privatestaticfinalintITME_1 = Menu.FIRST;

privatestaticfinalintITME_2 = Menu.FIRST+1;

privatestaticfinalintITME_3 = Menu.FIRST+2;

privateTextView text;

publicvoidonCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

text = (TextView)findViewById(R.id.TextView_1);

//调用registerForContextMenu()来注册上下文菜单

registerForContextMenu(text);

}

@Override

publicvoidonCreateContextMenu(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

publicbooleanonContextItemSelected(MenuItem item) {

switch(item.getItemId()) {

caseITME_1:

//设置TextView的背景颜色

text.setBackgroundColor(Color.RED);

break;

caseITME_2:

text.setBackgroundColor(Color.BLUE);

break;

caseITME_3:

text.setBackgroundColor(Color.WHITE);

break;

}

returntrue;

}

}

效果图:

140454539.jpg

三.子菜单(Sub Menu)

创建子菜单的步骤:

1.覆盖Activity的onCreateOptionMenu(Menu menu)方法,调用Menu的addSubMenu( )方法来添加子菜单(Sub Menu)

2.调用SubMenu的add( )方法来添加子菜单(Sub Menu)

3.覆盖onContextItemSelect( )方法来响应菜单单击事件

子菜单的实例:

packagecom.android.sub.activity;

importandroid.app.Activity;

importandroid.os.Bundle;

importandroid.view.Menu;

importandroid.view.MenuItem;

importandroid.view.SubMenu;

publicclassSubMenuActivityextendsActivity {

privatestaticfinalintITEM_1 = Menu.FIRST;

privatestaticfinalintITEM_2 = Menu.FIRST+1;

publicvoidonCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

}

//覆盖onCreateOptionsMenu(Menu menu)方法,添加子菜单项

publicbooleanonCreateOptionsMenu(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,"图片");

returntrue;

}

//覆盖onOptionsItemSelected(MenuItem item),响应菜单选项被单击事件

publicbooleanonOptionsItemSelected(MenuItem item) {

switch(item.getItemId()) {

caseITEM_1:

setTitle("添加文件!");

break;

caseITEM_2:

setTitle("添加图片!");

break;

}

returntrue;

}

}

效果图:

134828228.jpg134851201.jpg

注:menu.add的方法中的参数:

1.int类型的group ID参数,代表的是组概念,你可以将几个菜单项归为一组,以便更好的以组的方式管理你的菜单按钮。可以用到的方法有:

removeGroup(id)

setGroupCheckable(id, checkable, exclusive)

setGroupEnabled(id,boolean enabled)

setGroupVisible(id,visible)

2.int类型的item ID参数,代表的是项目编号。这个参数非常重要,一个item ID对应一个Menu中的选项。在后面使用菜单的时候,就是靠这个item ID来判断,你选中的是哪个选项。

3.int类型的order ID参数,代表的是菜单项的显示顺序。默认是0,表示菜单的显示顺序就是按照add的顺序来显示。

4.String类型的title参数,表示选项中显示的文字。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值