Android開發系列(二十八):使用SubMenu建立選項菜單

來源:互聯網
上載者:User

標籤:應用程式   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建立選項菜單

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.