在手机,当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