標籤:應用程式 android 3.0 菜單 submenu與menu
大部分手機上邊都會有一個“MENU”鍵,在一個應用安裝到手機上之後,可以通過“MENU”顯示該應用關聯的菜單。
但是,從Android 3.0開始,Android不再要求手機裝置上必須提供MENU案例,雖然現在還有很多手機都會提供MENU按鍵,但是有一部分已經不再提供。在這種情況下,Android推薦使用ActionBar來代替菜單。在以後的博文中我們會介紹Android對ActionBar的支援
Menu介面是實現這個功能的按鍵之一,其中SubMenu繼承自Menu這個父介面
接下來我們用一個具體的應用程式來說明下,大部分方法都會用到:
我們還是首先建立一個main.xml檔案:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"android:layout_width="fill_parent"android:layout_height="fill_parent"><EditText android:id="@+id/txt" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="用於測試的內容"android:editable="false"/></LinearLayout>
在這個檔案中,我們定義了一行文本,接下來我們會通過菜單和子功能表對行文本進行改變字型、改變字型顏色的修改。
接下來,我們看一下MenuTest.java:
import android.app.Activity;import android.graphics.Color;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 MenuTest extends Activity{// 定義字型大小功能表項目的標識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;@Overridepublic void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);edit = (EditText) findViewById(R.id.txt);}// 當使用者單擊MENU鍵時觸發該方法@Overridepublic boolean onCreateOptionsMenu(Menu menu){// -------------向menu中添加字型大小的子功能表-------------SubMenu fontMenu = menu.addSubMenu("字型大小");// 設定菜單的表徵圖fontMenu.setIcon(R.drawable.font);// 設定菜單頭的表徵圖fontMenu.setHeaderIcon(R.drawable.font);// 設定菜單頭的標題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(R.drawable.color);// 設定菜單頭的表徵圖colorMenu.setHeaderIcon(R.drawable.color);// 設定菜單頭的標題colorMenu.setHeaderTitle("選擇文字顏色");colorMenu.add(0, FONT_RED, 0, "紅色");colorMenu.add(0, FONT_GREEN, 0, "綠色");colorMenu.add(0, FONT_BLUE, 0, "藍色");return super.onCreateOptionsMenu(menu);}@Override// 選項菜單的功能表項目被單擊後的回調方法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(MenuTest.this, "您單擊了普通功能表項目" , Toast.LENGTH_SHORT);toast.show();break;}return true;}}首先,我們重寫了onCreateOptionsMenu(Menu menu)方法,當使用者點擊MENU鍵時會觸發這個方法:
這裡的menu就是按下MENU鍵時對應的那個菜單,我們通過menu.addSubMenu(CharSequence title)添加了兩個菜單“字型大小”、“字型顏色”,又通過add(int titleRes)添加了一個普通功能表項目
然後,我們分別為“字型大小”、“字型顏色”添加選項。
我們看下吧:
我們首先,點擊“MENU”鍵,可以得到下邊:
然後,我們點擊“字型大小”,就會出現下邊的:
點擊其中的某個選項,就可以改變文字的字型。
Android開發系列(二十八):使用SubMenu建立選項菜單