Android實(shí)現(xiàn)選項(xiàng)菜單子菜單
Android之選項(xiàng)菜單和子菜單學(xué)習(xí)筆記,供大家參考,具體內(nèi)容如下
菜單簡(jiǎn)介:
菜單在桌面應(yīng)用中使用十分廣泛,幾乎所有的桌面應(yīng)用都有菜單。但是隨著手機(jī)的發(fā)展,對(duì)于手機(jī)桌面菜單的使用減少了很多,一般來(lái)說(shuō)我們把菜單都放到應(yīng)用中是實(shí)現(xiàn),桌面應(yīng)用的菜單與手機(jī)應(yīng)用的菜單的不同之處就是,桌面菜單一般可見(jiàn),而手機(jī)不可見(jiàn),通常需要用戶按下手機(jī)上的MENU鍵時(shí),才會(huì)彈出菜單的相關(guān)應(yīng)用,這里簡(jiǎn)單的來(lái)說(shuō)下菜的簡(jiǎn)單使用情況,通過(guò)一個(gè)小案例來(lái)講解。
一般菜單的創(chuàng)建有兩種方式,一種是在Java代碼中創(chuàng)建,一種是在XML中創(chuàng)建,本次主要講解XML中創(chuàng)建菜單的案例,因?yàn)橐话阃扑]使用的都是XML方式來(lái)創(chuàng)建菜單,相比Java代碼,他更便于維護(hù),可擴(kuò)展性強(qiáng),耦合度底。
案例實(shí)現(xiàn),用戶輸入文字,可以通過(guò)菜單選擇字體的大小,字體的顏色等
實(shí)現(xiàn)步驟:
1.首先在資源文件夾的menu下創(chuàng)建菜單xml
menu_main.xml
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/menuFont" android:title="字體大小"> <menu> <group android:id="@+id/groupFont" android:checkableBehavior="none"> <item android:id="@+id/font_10" android:title="10" /> <item android:id="@+id/font_12" android:title="12" /> <item android:id="@+id/font_14" android:title="14" /> <item android:id="@+id/font_16" android:title="16" /> <item android:id="@+id/font_18" android:title="18" /> </group> </menu> </item> <item android:id="@+id/menuColor" android:icon="@mipmap/ic_launcher" android:title="字體顏色"> <menu> <group android:id="@+id/groupColor" android:checkableBehavior="none"> <item android:id="@+id/red" android:title="紅色" /> <item android:id="@+id/blue" android:title="藍(lán)色" /> <item android:id="@+id/green" android:title="綠色" /> </group> </menu> </item> </menu>
對(duì)于上面的xml文件中:
‘<'item …/>元素:定義菜單項(xiàng)。
‘<'group…/>子元素:將多個(gè)'<'item…/>定義的菜單項(xiàng)包裝成一個(gè)菜單組,'<'gruop…/>
子元素用于控制整組菜單的行為,該元素可指定如下的常用屬性:
- checkableBehavior:指定該組菜單的選擇行為??梢灾付閚one(不可選)、
- all(多選)和single(單選)三個(gè)值
- menuCategory:對(duì)菜單進(jìn)行分類,指定菜單的優(yōu)先級(jí)。有效值為container、
- system、secondary和alternative
- visible:指定該組件菜單是否可見(jiàn)。
- enable:指定該組菜單是否可用。
一般'<'item .../>元素用于定義菜單項(xiàng),'<'item .../>元素又可包含'<'menu.../>元素,位
于'<'item.../>元素內(nèi)部的'<'menu.../>就是他的子菜單。
對(duì)于'<'item…/>元素可用指定如下常用屬性:
android:id: 為菜單項(xiàng)指定一個(gè)唯一的標(biāo)識(shí)
android:title: 指定菜單項(xiàng)的標(biāo)題
android:icon: 指定菜單項(xiàng)的圖標(biāo)
android:alphabeticShortcut: 為菜單項(xiàng)指定字符快捷鍵
android:numericShortcut: 為菜單項(xiàng)指定數(shù)字快捷鍵
android:checkable: 設(shè)置該次啊單項(xiàng)是否可選
android:checked: 設(shè)置該菜單項(xiàng)是否已選中
android:visible: 設(shè)置該菜單項(xiàng)是否可見(jiàn)
android:enable: 設(shè)置該菜單項(xiàng)是否可用
2.設(shè)置與菜單項(xiàng)關(guān)聯(lián)的Activity,在activity中重寫(xiě)onCreateOptionsMenu(Menu menu)、
如果需要菜單項(xiàng)的監(jiān)聽(tīng)事件,則需要重寫(xiě)
onOptionsItemSelected(MenuItem item)
MainActivity.java
public class MainActivity extends AppCompatActivity {
private EditText mEdt;
private TextView mTv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mEdt = (EditText) findViewById(R.id.mEdt);
mTv = (TextView) findViewById(R.id.mInput);
}
/**
* 通過(guò)該方法添加菜單項(xiàng)或子菜單項(xiàng)
* @param menu
* @return
*/
@Override
public boolean onCreateOptionsMenu(Menu menu) {
//方式一添加菜單布局
MenuInflater inflater = new MenuInflater(this);
//將解析到的布局添加到menu中
inflater.inflate(R.menu.menu_main, menu);
//方式二添加菜單布局
// getMenuInflater().inflate(R.menu.menu_main,menu);
return super.onCreateOptionsMenu(menu);
}
/**
* 設(shè)置菜單項(xiàng)的點(diǎn)擊事件
* @param item
* @return
*/
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menuColor:
Toast.makeText(this, "你選擇了修改顏色", Toast.LENGTH_SHORT).show();
break;
case R.id.menuFont:
Toast.makeText(this, "你選擇了修改字體", Toast.LENGTH_SHORT).show();
break;
}
return super.onOptionsItemSelected(item);
}
}
基本的布局就是這樣了,看看整體布局

字體大小下的子菜單:

字體顏色下的子菜單:

3.開(kāi)始實(shí)現(xiàn)功能了,這里我只貼上功能實(shí)現(xiàn)的方法:onOptionsItemSelected(MenuItem item)
@Override
public boolean onOptionsItemSelected(MenuItem item) {
//先判斷點(diǎn)擊的是哪個(gè)id
switch (item.getItemId()) {
case R.id.font_10:
mEdt.setTextSize(10 * 2);
break;
case R.id.font_12:
mEdt.setTextSize(12 * 2);
break;
case R.id.font_14:
mEdt.setTextSize(14 * 2);
break;
case R.id.font_16:
mEdt.setTextSize(16 * 2);
break;
case R.id.font_18:
mEdt.setTextSize(18 * 2);
break;
case R.id.blue:
mEdt.setTextColor(Color.BLUE);
break;
case R.id.red:
mEdt.setTextColor(Color.RED);
break;
case R.id.green:
mEdt.setTextColor(Color.GREEN);
break;
}
return super.onOptionsItemSelected(item);
}
運(yùn)行結(jié)果:

簡(jiǎn)單的菜單布局就這些了,對(duì)于菜單還有另一種方法,那就是上下文菜單,有關(guān)上下文菜單,下次介紹
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Android開(kāi)發(fā)實(shí)現(xiàn)SubMenu選項(xiàng)菜單和子菜單示例
- Android中選項(xiàng)菜單(OptionMenu)的創(chuàng)建方法
- 常見(jiàn)Android選項(xiàng)菜單樣式集合
- 基于Android實(shí)現(xiàn)點(diǎn)擊某個(gè)按鈕讓菜單選項(xiàng)從按鈕周?chē)付ㄎ恢脧棾?/a>
- Android選項(xiàng)菜單用法實(shí)例分析
- android在連拍菜單中增加連拍張數(shù)選項(xiàng)功能實(shí)現(xiàn)代碼
- Android小程序?qū)崿F(xiàn)選項(xiàng)菜單
相關(guān)文章
Android實(shí)現(xiàn)360手機(jī)助手底部的動(dòng)畫(huà)菜單
這篇文章給大家分享了利用Android實(shí)現(xiàn)360手機(jī)助手底部的動(dòng)畫(huà)菜單效果,文中給出了實(shí)例代碼,這樣對(duì)大家的學(xué)習(xí)或者理解更有幫助,有需要的朋友們下面來(lái)一起看看吧。2016-10-10
自定義滑動(dòng)按鈕為例圖文剖析Android自定義View繪制
這篇文章主要介紹了自定義滑動(dòng)按鈕的例子,圖文剖析Android自定義View繪制,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-03-03
Android鍵盤(pán)自動(dòng)彈出解決方法分析
這篇文章主要介紹了Android鍵盤(pán)自動(dòng)彈出解決方法,結(jié)合實(shí)例形式對(duì)比分析了三種解決方法,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2016-01-01
Android Studio安裝配置方法圖文詳細(xì)教程
這篇文章主要為大家介紹了Android Studio下載和配置圖文詳細(xì)教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-07-07
一步步教你寫(xiě)Slack的Loading動(dòng)畫(huà)
這篇文章主要為大家詳細(xì)手摸手教你寫(xiě)Slack的Loading動(dòng)畫(huà),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-09-09
flutter PageView實(shí)現(xiàn)左右滑動(dòng)切換視圖
這篇文章主要為大家詳細(xì)介紹了flutter PageView實(shí)現(xiàn)左右滑動(dòng)切換視圖,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-07-07
android開(kāi)發(fā)實(shí)踐之ndk編譯命令簡(jiǎn)單示例
這篇文章主要給大家介紹了在android中ndk編譯命令使用的相關(guān)資料,文中詳細(xì)介紹了ndk-build命令行參數(shù),并通過(guò)簡(jiǎn)單的示例代碼給大家介紹了如何編寫(xiě) .c 文件,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。2017-06-06
Android NDK開(kāi)發(fā)之:配置環(huán)境的詳解
本篇文章是對(duì)Android中的配置環(huán)境進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05

