Android中使用菜单
Android程序使用菜单是非常之方便的,而且Android系统的菜单也做得很有特色,系统有专门的Menu键,而且菜单的样式不同于通常的弹 出或者下拉菜单,Android的菜单更像是堆砌起来的。
Menu是android.view包里面的接口,它菜单通常是作为Activity的一部分。在Android的文档里面这样描述Menu:
通常,每个Activity都支持(这里意思应该是已经创建好,默认存在菜单)一个选项菜单(option menu)和相应的事件响应。可以为菜单添加菜单项和相应的事件处理。添加菜单项最简单的方法是是使用XML文件,在Menu标签下使用 MenuInflater,然后重载Activity的
onOptionsItemSelected(MenuItem)方法 或者onContextItemSelected(MenuItem)方法,在方法体里添加事件处理代码。
总的来说,有三种类型的菜单:
Contex Menus,情境菜单:不支持菜单快捷键和图标。
Options Menus,选项菜单:支持图标,但不支持菜单项选中标记。
Sub menus,子菜单,不支持图标,不能再有子菜单。
除了使用xml文件的形式,同样也可以在代码中添加菜单项,只需要重载Activity的public boolean onCreateOptionsMenu(Menu menu) 方法,示例如下:
@Override public boolean onCreateOptionsMenu(Menu menu) { super.onCreateOptionsMenu(menu); menu.add(0, Menu.FIRST, Menu.NONE, "我的位置"); menu.add(0, Menu.FIRST + 1, Menu.NONE, "卫星地图"); menu.add(0, Menu.FIRST + 2, Menu.NONE, "清除图层"); return true; }
Menu.add(int groupId, int itemId, int order, CharSequence title)方法,第一个参数用来指定菜单项分组,API文档说分组可以用来进行分组状态更新,第二个参数很重要,是菜单项的唯一ID,在后面菜单事件处 理时要用到,第三个参数为排序值,用来指定菜单项顺序,可以无视,最后一个参数为菜单项的标题,在屏幕上面显示用。
响应的事件处理代码示例如下:
@Override public boolean onOptionsItemSelected(MenuItem item) { super.onOptionsItemSelected(item); switch (item.getItemId()) {//获取菜单项的ID,即前面Menu.add方法的第二个参数 case Menu.FIRST: myLocationOverlay.runOnFirstFix(new Runnable() {//定位,并移动地图到自己的位置 public void run() { mc.animateTo(myLocationOverlay.getMyLocation()); } }); break; case Menu.FIRST + 1://切换地图视图 if (isSatelite) { map.setSatellite(false); map.setStreetView(false); item.setTitle("卫星地图"); isSatelite = false; } else { map.setSatellite(true); map.setStreetView(true); item.setTitle("普通地图"); isSatelite = true; } break; case Menu.FIRST + 2://清楚所有标记 overlay.clear(); break; default: break; } return true; }
另一种方式是使用XML文件和MenuInflater类来创建菜单。Android使用XML作为资源管理的方式,独立于编码,具有更高的灵活性 和扩展性。
在res下面建立menu文件夹,然后新建一个xml文档,命名为menu.xml。要建立的菜单项与上面相同。文件内容如下:
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:title="我的位置" android:id="@+id/ID_MYPOS"></item> <item android:title="卫星地图" android:id="@+id/ID_MAPTYPE"></item> <item android:title="清除图层" android:id="@+id/ID_CLEAR"></item> </menu>
提示:ADT带有XML文件编辑功能,可以根据XML文件类型来启动适合的编辑工具,无需手动编写XML文档,用图形化工具即可。
需要注意的是这里将菜单项的ID进行了修改,让Android SDK自动生成ID,所以需要修改onOptionsItemSelected里面的Switch case条件。修改为:
switch (item.getItemId()) { case R.id.ID_MYPOS: //... break; case R.id.ID_MAPTYPE: //... break; case R.id.ID_CLEAR: //... break; default: break; }搞定。看看酷酷的Menu截图吧:
地图是雄伟的紫禁城~~绿波环绕,金瓦红墙,气势非凡!
- Android 菜单(Menu)控件的使用
- Android高手进阶教程(六)之 ----Android 中MenuInflater的使用(布局定义菜单)
- 【Android】使用Popwindow实现左侧弹出菜单层
- Android高手进阶教程(六)之----Android 中MenuInflater的使用(布局定义菜单)!
- Android高手进阶教程(六)之----Android 中MenuInflater的使用(布局定义菜单)!
- Android四种菜单的使用
- Android底部菜单,使用fragment实现
- Android高手进阶教程(六)之----Android 中MenuInflater的使用(布局定义菜单)!
- 【Android学习日记】(四) 菜单使用例子
- Android高手进阶教程(六)之----Android 中MenuInflater的使用(布局定义菜单)!
- android 菜单的相互使用
- 菜单之二:使用xml文件定义菜单 分类: H1_ANDROID 2013-11-03 09:39 1038人阅读 评论(0) 收藏
- Android菜单详解(四)——使用上下文菜单ContextMenu
- Android使用DrawerLayout创建左右两个抽屉菜单 推荐
- android各种菜单使用介绍
- Android菜单设计(1) : 使用xml文件布局创建 options menu
- Android高手进阶教程(六)之----Android 中MenuInflater的使用(布局定义菜单)!
- android之使用ListView实现多菜单功能
- Android中弹出菜单PopupWindow的使用
- Android菜单详解(四)——使用上下文菜单ContextMenu