Android开发系列(二十八):使用SubMenu创建选项菜单
大部分手機(jī)上邊都會(huì)有一個(gè)“MENU”鍵,在一個(gè)應(yīng)用安裝到手機(jī)上之后,能夠通過(guò)“MENU”顯示該應(yīng)用關(guān)聯(lián)的菜單。
可是,從Android 3.0開(kāi)始,Android不再要求手機(jī)設(shè)備上必須提供MENU案件,盡管如今還有非常多手機(jī)都會(huì)提供MENU按鍵,可是有一部分已經(jīng)不再提供。在這樣的情況下,Android推薦使用ActionBar來(lái)取代菜單。在以后的博文中我們會(huì)介紹Android對(duì)ActionBar的支持
Menu接口是實(shí)現(xiàn)這個(gè)功能的按鍵之中的一個(gè),當(dāng)中SubMenu繼承自Menu這個(gè)父接口
接下來(lái)我們用一個(gè)詳細(xì)的應(yīng)用程序來(lái)說(shuō)明下,大部分方法都會(huì)用到:
我們還是首先創(chuàng)建一個(gè)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="用于測(cè)試的內(nèi)容"android:editable="false"/> </LinearLayout> 在這個(gè)文件里,我們定義了一行文本,接下來(lái)我們會(huì)通過(guò)菜單和子菜單對(duì)行文本進(jìn)行改變字體、改變字體顏色的改動(dòng)。接下來(lái),我們看一下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 {// 定義字體大小菜單項(xiàng)的標(biāo)識(shí)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;// 定義普通菜單項(xiàng)的標(biāo)識(shí)final int PLAIN_ITEM = 0x11b;// 定義字體顏色菜單項(xiàng)的標(biāo)識(shí)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);}// 當(dāng)用戶單擊MENU鍵時(shí)觸發(fā)該方法 @Overridepublic boolean onCreateOptionsMenu(Menu menu){// -------------向menu中加入字體大小的子菜單-------------SubMenu fontMenu = menu.addSubMenu("字體大小");// 設(shè)置菜單的圖標(biāo)fontMenu.setIcon(R.drawable.font);// 設(shè)置菜單頭的圖標(biāo)fontMenu.setHeaderIcon(R.drawable.font);// 設(shè)置菜單頭的標(biāo)題fontMenu.setHeaderTitle("選擇字體大小");fontMenu.add(0, FONT_10, 0, "10號(hào)字體");fontMenu.add(0, FONT_12, 0, "12號(hào)字體");fontMenu.add(0, FONT_14, 0, "14號(hào)字體");fontMenu.add(0, FONT_16, 0, "16號(hào)字體");fontMenu.add(0, FONT_18, 0, "18號(hào)字體");// -------------向menu中加入普通菜單項(xiàng)-------------menu.add(0, PLAIN_ITEM, 0, "普通菜單項(xiàng)");// -------------向menu中加入文字顏色的子菜單-------------SubMenu colorMenu = menu.addSubMenu("字體顏色");colorMenu.setIcon(R.drawable.color);// 設(shè)置菜單頭的圖標(biāo)colorMenu.setHeaderIcon(R.drawable.color);// 設(shè)置菜單頭的標(biāo)題colorMenu.setHeaderTitle("選擇文字顏色");colorMenu.add(0, FONT_RED, 0, "紅色");colorMenu.add(0, FONT_GREEN, 0, "綠色");colorMenu.add(0, FONT_BLUE, 0, "藍(lán)色");return super.onCreateOptionsMenu(menu);}@Override// 選項(xiàng)菜單的菜單項(xiàng)被單擊后的回調(diào)方法public boolean onOptionsItemSelected(MenuItem mi){//推斷單擊的是哪個(gè)菜單項(xiàng),并針對(duì)性的作出響應(yīng)。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, "您單擊了普通菜單項(xiàng)" , Toast.LENGTH_SHORT);toast.show();break;}return true;} }首先,我們重寫(xiě)了onCreateOptionsMenu(Menu menu)方法,當(dāng)用戶點(diǎn)擊MENU鍵時(shí)會(huì)觸發(fā)這種方法:這里的menu就是按下MENU鍵時(shí)相應(yīng)的那個(gè)菜單,我們通過(guò)menu.addSubMenu(CharSequence title)加入了兩個(gè)菜單“字體大小”、“字體顏色”,又通過(guò)add(int titleRes)加入了一個(gè)普通菜單項(xiàng)
然后,我們分別為“字體大小”、“字體顏色”加入選項(xiàng)。
我們看下效果圖吧:
我們首先,點(diǎn)擊“MENU”鍵,能夠得到下邊效果圖:
然后,我們點(diǎn)擊“字體大小”,就會(huì)出現(xiàn)下邊的效果圖:
點(diǎn)擊當(dāng)中的某個(gè)選項(xiàng),就能夠改變文字的字體。
轉(zhuǎn)載于:https://www.cnblogs.com/blfshiye/p/4296993.html
總結(jié)
以上是生活随笔為你收集整理的Android开发系列(二十八):使用SubMenu创建选项菜单的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 5.1 jQuery基础
- 下一篇: Android——android:gra