按menu键显示。 因为options menu在屏幕底部最多只能显示6个菜单项,这些菜单项称为icon menu,icon menu只支持文字(title) 以及icon,可以设置快捷键,不支持checkbox以及radio控件,所以不能设置checkable选项。而多于6的菜单项会以“more” icon menu来调出,称为expanded menu。它不支持icon,其他的特性都和icon menu一样!
两种使用方式:
(1)通过xml配置, menu.xml:
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android" > <item android:id="@+id/about" android:title="About"/> <item android:id="@+id/exit" android:title="Exit"/> </menu>java代码:
public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.layout.menu, menu); return super.onCreateOptionsMenu(menu); } @Override public boolean onOptionsItemSelected(MenuItem item) { int item_id = item.getItemId(); switch (item_id) { case R.id.about: Toast.makeText(this, "about", Toast.LENGTH_SHORT).show(); break; case R.id.exit: Toast.makeText(this, "exit", Toast.LENGTH_SHORT).show(); break; } return true; }(2) 通过代码:
public boolean onCreateOptionsMenu(Menu menu) {
Log.i("com.test", "------------onCreateOptionsMenu"); // 只执行一次
menu.add(0, 1, 1, "菜单1"); // 第二个属性itemId,第三个属性order
menu.add(0, 2, 2, "菜单2");
return super.onCreateOptionsMenu(menu);
}
private boolean mIsChange = false;
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
Log.i("com.test", "------------onPrepareOptionsMenu"); // 每次都执行
if (mIsChange) {
mIsChange = false;
menu.getItem(1).setTitle("注销");
} else {
mIsChange = true;
menu.getItem(1).setTitle("登录");
}
return super.onPrepareOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) { // itemId
case 1:
Toast.makeText(this, "111", Toast.LENGTH_SHORT).show();
break;
case 2:
Toast.makeText(this, "222", Toast.LENGTH_SHORT).show();
break;
}
return true;
}
在相应的view上按几秒后显示
@Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { menu.add(0, 1, 1, "中国"); menu.add(0, 2, 2, "美国"); menu.add(0, 3, 3, "日本"); super.onCreateContextMenu(menu, v, menuInfo); } @Override public boolean onContextItemSelected(MenuItem item) { switch (item.getItemId()) { case 1: Toast.makeText(this, "中国", Toast.LENGTH_SHORT).show(); break; case 2: Toast.makeText(this, "美国", Toast.LENGTH_SHORT).show(); break; case 3: Toast.makeText(this, "日本", Toast.LENGTH_SHORT).show(); break; } return super.onContextItemSelected(item); }
以上两种menu都可以加入子菜单,但是子菜单不能嵌套子菜单,最多两层。子菜单不支持icon