Android选项菜单
Android平台提供的菜单课分为三大类:选项菜单(OptionsMenu)、上下文菜单(ContextMenu)以及子菜单(SubMenu)。
Options Menu:按下手机的Menu键,在屏幕底部会出现带图标的菜单项,最多只能显示6个。
Context Menu: Do not support item shortcuts and item icons.(不支持快捷键和显示图标)
Sub menus: Do not support item icons, or nested sub menus.(不支持显示图标和嵌套的子菜单)
对OptionsMenu的操作分为三步:
1、重新实现onCreateOptionsMenu()回调方法
2、实现点击菜单事件
3、动态更新菜单
Main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:id="@+id/LinearLayout01"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
xmlns:android="http://schemas.android.com/apk/res/android"
>
<ScrollView
android:id="@+id/scrollView"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<EditText
android:id="@+id/editText"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:editable="true"
android:cursorVisible="false"
android:text="您的选择为\n"/>
</ScrollView>
</LinearLayout>
MenuActivity.java
package com.example.menuoptions;
import android.os.Bundle;
import android.app.Activity;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.Menu;
import android.view.MenuItem;
import android.view.MenuItem.OnMenuItemClickListener;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
public class MenuActivity extends Activity {
//OptionsMenu的itemid
final int MENU_SAVE=0;
final int MENU_DELETE=1;
//定义 MenuItem
MenuItem menu_item_save;
MenuItem menu_item_delete;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
@Override
//添加OptionsMenu菜单
public boolean onCreateOptionsMenu(Menu menu) {
//添加菜单项 并返回 MenuItem
menu_item_save=menu.add(0,MENU_SAVE,0,"保存");
menu_item_delete=menu.add(0,MENU_DELETE,0,"删除");
//给MenuItem增加图像
menu_item_save.setIcon(android.R.drawable.ic_menu_save);
menu_item_delete.setIcon(android.R.drawable.ic_menu_delete);
return true;
}
// 重写onOptionsItemSelected()回调方法
public boolean onOptionsItemSelected(MenuItem item)
{
super.onOptionsItemSelected(item);
switch(item.getItemId()){
case MENU_SAVE:
EditText tv=(EditText)findViewById(R.id.editText);
tv.setText("您的选择是保存");
break;
case MENU_DELETE:
EditText tv1=(EditText)findViewById(R.id.editText);
tv1.setText("您的选择是删除");
break;
}
return false;
}
//动态更新菜单项
public boolean onPrepareOptionsMenu(Menu menu){
super.onPrepareOptionsMenu(menu);
//通过id知道MenuItem
MenuItem item=menu.findItem(MENU_SAVE);
//由于在此处设置“保存”菜单没有图标 所以最后显示的“保存菜单”没有图标
item.setIcon(null);
return true;
}
}
运行结果: