Android开发之menu菜单
android系统里面有四种类型的菜单:options menu(选项菜单),context menu(上下文菜单),sub menu(子菜单),popup menu(弹出菜单)。
首先说 选项菜单(optionsmenu)
一、方法介绍:
public booleanoncreateoptionsmenu(menu menu):使用此方法调用optionsmenu 。
public booleanonoptionsitemselected(menuitem item):选中菜单项后发生的动作。
public voidonoptionsmenuclosed(menu menu):菜单关闭后发生的动作。
public booleanonprepareoptionsmenu(menu menu):选项菜单显示之前onprepareoptionsmenu方法会被调用,你可以用此方法来根据打当时的情况调整菜单。
public booleanonmenuopened(int featureid, menu menu):单打开后发生的动作。
二、默认样式
默认样式是在屏幕底部弹出一个菜单,这个菜单我们就叫他选项菜单optionsmenu,一般情况下,选项菜单最多显示2排每排3个菜单项,这些菜单项有文字有图标,也被称作icon menus,如果多于6项,从第六项开始会被隐藏,在第六项会出现一个more里,点击more才出现第六项以及以后的菜单项,这些菜单项也被称作expanded menus。下面介绍。
1.重载oncreateoptionsmenu(menu menu)方法
@override public boolean oncreateoptionsmenu(menu menu) { // inflate the menu; this adds items to the action bar if it is present. //getmenuinflater().inflate(r.menu.main, menu); menu.add(0,1,1,"设置").seticon(r.drawable.setting); menu.add(0,3,3,"设置").seticon(r.drawable.setting); menu.add(0,2,2,"下载").seticon(r.drawable.download); }
重载oncreateoptionsmenu(menu menu)方法,并在此方法中添加菜单项,最后返回true,如果false,菜单则不会显示。
注意:
大部分手机上边都会有一个“menu”键,在一个应用安装到手机上之后,可以通过“menu”显示该应用关联的菜单。
但是,从android 3.0开始,android不再要求手机设备上必须提供menu案件,虽然现在还有很多手机都会提供menu按键,但是有一部分已经不再提供。在这种情况下,android推荐使用actionbar来代替菜单。在以后的博文中我们会介绍android对actionbar的支持
4.2上的optionsmenu是放到actionbar上面了,必须要在xml文件中设置showasaction="always"活着showasaction="ifroom"才能在actionbar上显示。只有在actionbar上显示的菜单,才会有图标。要在代码中设置的话,menu.finditem(id).setshowasaction(menuitem.show_as_action_always)
2.重载onoptionsitemselected(menuitem item)方法为捕捉菜单项事件
@override public boolean onoptionsitemselected(menuitem item) { // todo auto-generated method stub if (item.getgroupid() == 0 &&item.getitemid() == 1) { intent intent = new intent(this, secondactivity.class); startactivity(intent); } else { toast.maketext(this, item.gettitle(), toast.length_short).show(); } return super.onoptionsitemselected(item); }
上下文菜单(contextmenu)
当用户长按一个控件时时,弹出的菜单我们称为上下文菜单。我们经常在windows中用鼠标右键单击弹出的菜单就是上下文菜单。
1、重载activity的oncreatecontextmenu()方法,调用menu的add方法添加菜单项menuitem
@override public void oncreatecontextmenu(contextmenu menu, view v, contextmenuinfo menuinfo) { menu.add(0, 1, 0, "红色背景"); menu.add(0, 2, 0, "绿色背景"); menu.add(1, 3, 0, "白色背景"); // todo auto-generated method stub super.oncreatecontextmenu(menu, v, menuinfo); }
2、重载oncontextitemselected()方法,响应菜单单击事件
@override public boolean oncontextitemselected(menuitem item) { // todo auto-generated method stub switch(item.getitemid()) { case 1: mytext.setbackgroundcolor(color.red); break; case 2: mytext.setbackgroundcolor(color.green); break; case 3: mytext.setbackgroundcolor(color.white); break; } return true; }
3、重载registerforcontextmenu()方法,为视图注册上下文菜单
private textview mytext; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); mytext = (textview)findviewbyid(r.id.mytext); registerforcontextmenu(mytext); }
子菜单(submenu)
子菜单就是将相同功能的分组进行多级显示的一种菜单,比如,windows的“文件”菜单中就有“新建”,“打开”,“关闭”等子菜单。
创建子菜单的方法
1、重载activity的oncreateoptionsmenu()方法,调用menu的addsubmenu()方法添加子菜单项
2、调用submenu的add()饭饭,添加子菜单项
@override public boolean oncreateoptionsmenu(menu menu) { // inflate the menu; this adds items to the action bar if it is present. submenu submenu = menu.addsubmenu(0, 4, 4, "登录/注册"); submenu.add(1, 1, 1, "登录"); submenu.add(1, 2, 2, "注册"); return true; }
3、重载onoptionsitemselected(menuitem item)方法为捕捉菜单项事件
这个方法有一个menuitem参数,可以使用其gettitle和getitemid方法来判断单击的是哪个菜单项
public boolean onoptionsitemselected(menuitem item) { // todo auto-generated method stub if(item.gettitle().equals("登录")) { log.e("action:","点击了 注册/登录"); } return super.onoptionsitemselected(item); }
submenu是menu的子接口,添加submenu后,可以通过submenu.add方法添加其子菜单项。在子菜单项上不能显示图像,但可以在子菜单的头部显示图像,不过子菜单项可以带复选框和选项按钮。
注意:子菜单不能再增加子菜单;
弹出菜单(popup)
该类菜单需要和某个view绑定,当点击该view时在该view的上面或下面(视屏幕空间而定)弹出菜单。
使用方法:
1、建立xml菜单资源文件;
popup.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android" > <item android:id="@+id/action_edit" android:orderincategory="100" android:showasaction="never" android:title="edit"/> <item android:id="@+id/action_share" android:orderincategory="100" android:showasaction="never" android:title="popup"/> </menu>
2~5步均可在绑定view的点击事件中实现!
2、建立popupmenu对象,实例化传入上下文context和绑定的view;
3、使用popupmenu对象的getmenuinflater().inflate()把xml菜单文件压进来,
4、使用popupmenu对象自身的setonmenuitemclicklistener设置点击事件;
5、使用popupmenu对象自身的show显示弹出菜单。
public void showpopumenu(view v) { popupmenu popup = new popupmenu(mainactivity.this, v); menuinflater inflater = popup.getmenuinflater(); inflater.inflate(r.menu.popup, popup.getmenu()); popup.show(); }
以上内容就是小编给大家介绍的android开发之menu菜单,希望大家喜欢。
上一篇: java中常用的排序方法
下一篇: C#时间戳基本用法实例分析