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; } }
运行结果:
转载于:https://www.cnblogs.com/welsh-android-learning/archive/2012/08/05/2623582.html
