OptionsMenu
在android的SDK中options menu 是这样解释的:
Options menus: The
icon menus do not support item check marks and only show the item's
condensed title
. The
expanded menus (only available if six or more menu items are visible, reached via the 'More' item in the icon menu) do not show item icons, and item check marks are discouraged.
具体的操作表现就是 在android手机上按 menu 键时显示的菜单,点击相应的菜单可以进行相应的操作。
使用步骤
Option menu的使用比较简单,首先在res文件夹下新建menu目录,然后往里面添加菜单的XML 文件。
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/settings" android:title="@string/settings_label"
android:icon="@android:drawable/ic_menu_preferences"
android:alphabeticShortcut="s">
</item>
</menu>
item:每一个item对应一项菜单。
android:icon:用于指定菜单显示的图标。
android:title:菜单的标题,显示在图标下面。
android:alphabeticShortcut:菜单选择的快捷键。
关于Menu的更多属性请查看SDK上的
Menu Resource。
第二步是在Activity里重写 onCreateOptionsMenu 方法,并通过
MenuInflater 将刚才的xml资源转化为Menu 实例。并显示在Activity里
/**
* 创建系统菜单,该菜单通过按下Menu键显示
*/
@Override
publicboolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
//通过MenuInflater将XML 实例化为 Menu Object
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu, menu);
returntrue;
}
运行模拟器点击Menu键,就可以看到菜单目录的显示了。但是此时点击菜单并没有任何反应,原因是我们还没添加对应的处理事件。给menu添加处理事件需要重写public boolean onOptionsItemSelected(MenuItem item)方法。
/**
* 菜单点击事件
*/
@Override
publicboolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.about:
Logger.d("Displaying the about box");
// 显示关于页
displayAboutBox();
returntrue;
case R.id.help:
Logger.d("Displaying the help dialog");
// 显示到帮帐页
displayHelpDialog();
returntrue;
case R.id.settings:
Logger.d("Displaying the settings");
// 跳转到配置页
displaySettings();
returntrue;
case R.id.teams:
Logger.d("Displaying the team configuration");
// 跳转到团队配置页
displayTeamConfiguration();
returntrue;
case R.id.quit:
Logger.d("Quitting");
// 退出程序
finish();
returntrue;
default:
Logger.e("Unknown menu item selected");
//返回False交由系统正常处理菜单,返回True则由本程序处理
returnfalse;
}
}
根据MenuItem的 getItemId()获取对应menu项的ID,这个id值对应xml中的 android:id。这样菜单功能就完成实现了,建议将一些不常用的功能链接放到菜单中例如:about us 、help 等等,因为用户可能不懂得如何使用菜单。