標籤:version alt 定義 ade class txt pre .com bre
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>
activity_main.xml
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; }}
MainActivity
一、介面布局
只有一個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; }
Android_(菜單)選項菜單