在手机,当Menu按下的时候,每个Activity都可以选择处理这一请求,在屏幕底部弹出一个菜单,这个菜单我们就叫他选项菜单OptionsMenu,一般情况下,选项菜单最多显示2排每排3个菜单项,这些菜单项有文字有图标,也被称作Icon Menus,如果多于6项,从第六项开始会被隐藏,在第六项会出现一个More里,点击More才出现第六项以及以后的菜单项,这些菜单项也被称作Expanded Menus。
menu实现方法有很多种,第一种,在menu中的main.xml中定义局文件:
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<group
android:id="@+id/logined"
android:menuCategory="alternative">
<item
android:id="@+id/item1"
android:title="菜单1"
android:orderInCategory="2"
android:icon="@drawable/ic_launcher">
</item>
<item
android:id="@+id/item2"
android:title="菜单2"
android:orderInCategory="6"
android:icon="@drawable/ic_launcher">
</item>
</group>
<group
android:id="@+id/unlogin"
android:menuCategory="container">
<item
android:id="@+id/item3"
android:title="菜单3"
android:orderInCategory="5"
android:icon="@drawable/ic_launcher">
</item>
<item
android:id="@+id/item4"
android:orderInCategory="4"
android:title="菜单4"
android:icon="@drawable/ic_launcher">
</item>
</group>
</menu>
在MainActivity中引用布局文件
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.main, menu);
return true;
}
在MainActivity中添加监听处理
@Override
public boolean onMenuItemSelected(int id, MenuItem item) {
// TODO Auto-generated method stub
//switch(item.getItemId())
switch(item.getItemId()){
case R.id.item1:
Toast.makeText(getApplication(), "item1", Toast.LENGTH_SHORT).show();
break;
case R.id.item2:
Toast.makeText(getApplication(), "item2", Toast.LENGTH_SHORT).show();
break;
case R.id.item3:
Toast.makeText(getApplication(), "item31", Toast.LENGTH_SHORT).show();
break;
case R.id.item4:
Toast.makeText(getApplication(), "item4", Toast.LENGTH_SHORT).show();
break;
}
return super.onMenuItemSelected(id, item);
}
使用下面这个效果是一样的
// @Override
// public boolean onOptionsItemSelected(MenuItem item) {
// // TODO Auto-generated method stub
// switch(item.getItemId()){
// case R.id.item1:
// Toast.makeText(getApplication(), "item1", Toast.LENGTH_SHORT).show();
// break;
// case R.id.item2:
// Toast.makeText(getApplication(), "item2", Toast.LENGTH_SHORT).show();
// break;
// case R.id.item3:
// Toast.makeText(getApplication(), "item31", Toast.LENGTH_SHORT).show();
// break;
// case R.id.item4:
// Toast.makeText(getApplication(), "item4", Toast.LENGTH_SHORT).show();
// break;
// }
// return super.onOptionsItemSelected(item);
// }
第二种方法是:
protected static final int SHEN = Menu.FIRST;
protected static final int SHEN1 = Menu.FIRST + 1;
protected static final int XIAO = Menu.FIRST + 2;
protected static final int XIAO1 = Menu.FIRST + 3;
// menu菜单选项
public boolean onCreateOptionsMenu(Menu menu) {
// TODO Auto-generated method stub
super.onCreateOptionsMenu(menu);
menu.add(0, SHEN, 0, "item1");// 添加menu菜单一个item
menu.add(0, SHEN1, 0, "item2");// 添加menu菜单一个item
menu.add(0, XIAO, 0, "item3");// 添加menu菜单一个item
// 第一个参数是菜单所在组的名字,组的id,第二个是item的id ,第三个是item// 最后一个是item显示的内容。
return true;
}
更详细可参考这里:http://www.cnblogs.com/giuz/archive/2010/10/19/1855235.html