Android系統中菜單分為Options Menu、Context Menu、Sub Men三種
Options Menu和Context Menu屬於一級菜單
Sub Menu屬於Options Menu和Context Menu的子菜單
Sub Menu下不能再添加菜單,Android最多只能支持兩級菜單
選項菜單(Options Menu)在當前Activity中按下菜單鍵就會顯示
Android4.0一下默認在屏幕底部(我也不知道我的為什么默認是在右上角!!!)
常用以下方法使用 選項菜單
onCreateOptionsMenu(Menu menu):創建菜單,會在菜單第一次顯示時調用。
onPrepareOnptionsMenu(Menu menu): 准備顯示菜單,菜單每次顯示前調用。
onOptionsItemSelected(MenuItem item):菜單項被選中后處理選中的菜單項。
onMenuOpened(int featureId,Menu menu):菜單被打開的事件。
onOptionsMenuClosed(Menu menu):菜單被關閉的事件。
openOptionsMenu():調用打開菜單
closeOptionsMenu():調用關閉菜單
運行截圖:



程序結構:

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="fill_parent" android:layout_height="fill_parent" tools:context="com.example.asus.gary_03.MainActivity"> <EditText android:id="@+id/txt" android:layout_width="fill_parent" android:layout_height="wrap_content" android:hint="輸入文字" android:editable="false" android:inputType="textPersonName" /> </LinearLayout>
package com.example.asus.gary_03; import android.graphics.Color; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.SubMenu; import android.widget.EditText; import android.widget.Toast; public class MainActivity extends AppCompatActivity { //定義字體大小菜單項的標識 final int FONT_10 = 0x111; final int FONT_12 = 0x112; final int FONT_14 = 0x113; final int FONT_16 = 0x114; final int FONT_18 = 0x115; //定義普通菜單項的標識 final int PLAIN_ITEM = 0x11b; //定義字體顏色菜單項的標識 final int FONT_RED = 0x116; final int FONT_BLUE = 0x117; final int FONT_GREEN = 0x118; private EditText edit; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); edit = (EditText)findViewById(R.id.txt); } public boolean onCreateOptionsMenu(Menu menu) { //向menu中添加字體大小的子菜單 SubMenu fontMenu = menu.addSubMenu("字體大小"); //設置菜單的圖標 fontMenu.setIcon(android.R.drawable.btn_plus); //設置菜單頭的圖標 fontMenu.setHeaderIcon(android.R.drawable.btn_default); //設置菜單頭的標題 fontMenu.setHeaderTitle("選擇字體大小"); fontMenu.add(0,FONT_10,0,"10號字體"); fontMenu.add(0,FONT_12,0,"12號字體"); fontMenu.add(0,FONT_14,0,"14號字體"); fontMenu.add(0,FONT_16,0,"16號字體"); fontMenu.add(0,FONT_18,0,"18號字體"); //向menu中添加普通菜單項 menu.add(0,PLAIN_ITEM,0,"普通菜單項"); //向menu中添加文字顏色的子菜單 SubMenu colorMenu = menu.addSubMenu("字體的顏色"); colorMenu.setIcon(android.R.drawable.btn_plus); colorMenu.setHeaderIcon(android.R.drawable.btn_default); colorMenu.setHeaderTitle("選擇文字的顏色"); colorMenu.add(0,FONT_RED,0,"紅色"); colorMenu.add(0,FONT_GREEN,0,"綠色"); colorMenu.add(0,FONT_BLUE,0,"藍色"); return super.onCreateOptionsMenu(menu); } public boolean onOptionsItemSelected(MenuItem mi) { switch(mi.getItemId()) { case FONT_10: edit.setTextSize(10*2); break; case FONT_12: edit.setTextSize(12*2); break; case FONT_14: edit.setTextSize(14*2); break; case FONT_16: edit.setTextSize(16*2); break; case FONT_18: edit.setTextSize(18*2); break; case FONT_RED: edit.setTextColor(Color.RED); break; case FONT_GREEN: edit.setTextColor(Color.GREEN); break; case FONT_BLUE: edit.setTextColor(Color.BLUE); break; case PLAIN_ITEM: Toast toast = Toast.makeText(MainActivity.this,"單擊普通菜單項",Toast.LENGTH_SHORT); toast.show(); break; } return true; } }
一、界面布局
只有一個EditText用來顯示測試的內容
二、實現程序
1、向menu中添加字體大小的子菜單
fontMenu.setHeaderTitle("選擇字體大小");
fontMenu.add(0,FONT_10,0,"10號字體");
fontMenu.add(0,FONT_12,0,"12號字體");
fontMenu.add(0,FONT_14,0,"14號字體");
fontMenu.add(0,FONT_16,0,"16號字體");
fontMenu.add(0,FONT_18,0,"18號字體");
//向menu中添加普通菜單項
menu.add(0,PLAIN_ITEM,0,"普通菜單項");
//向menu中添加文字顏色的子菜單
SubMenu colorMenu = menu.addSubMenu("字體的顏色");
colorMenu.setIcon(android.R.drawable.btn_plus);
colorMenu.setHeaderIcon(android.R.drawable.btn_default);
colorMenu.setHeaderTitle("選擇文字的顏色");
colorMenu.add(0,FONT_RED,0,"紅色");
colorMenu.add(0,FONT_GREEN,0,"綠色");
colorMenu.add(0,FONT_BLUE,0,"藍色");
2、實現對子菜單項的選擇
onOptionsItemSelected(MenuItem item):菜單項被選中后處理選中的菜單項。
public boolean onOptionsItemSelected(MenuItem mi) { switch(mi.getItemId()) { case FONT_10: edit.setTextSize(10*2); break; case FONT_12: edit.setTextSize(12*2); break; case FONT_14: edit.setTextSize(14*2); break; case FONT_16: edit.setTextSize(16*2); break; case FONT_18: edit.setTextSize(18*2); break; case FONT_RED: edit.setTextColor(Color.RED); break; case FONT_GREEN: edit.setTextColor(Color.GREEN); break; case FONT_BLUE: edit.setTextColor(Color.BLUE); break; case PLAIN_ITEM: Toast toast = Toast.makeText(MainActivity.this,"單擊普通菜單項",Toast.LENGTH_SHORT); toast.show(); break; } return true; }
