如何在XML中定義菜單
和Android UI layout一樣,我們也可以在XML中定義應(yīng)用程序的菜單。通過在菜單的onCreateOptionsMenu方法中膨脹菜單layout。這樣做會(huì)使我們的程序代碼簡單多了,而且盡可能的將更多的界面設(shè)計(jì)部分放到XML,便于瀏覽。
1. 在工程的/res/文件夾下創(chuàng)建menu文件夾,用來保存你為應(yīng)用程序定義的菜單XML文件。
在菜單XML layout中,有三個(gè)有效的元素:menu、group、item。item和group必須是menu的子元素,且item必須是group的子元素。另外的menu可以是item的子元素(為了創(chuàng)建子菜單)。下面的XML片段顯示了菜單的層次定義:
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:title="Play" android:id="@+id/media_play" android:icon="@android:drawable/ic_media_play"/> <item android:title="Pause" android:id="@+id/media_pause" android:icon="@android:drawable/ic_media_pause"/> <item android:title="File" android:id="@+id/file"> <menu> <item android:title="Open..." android:id="@+id/file_open"/> <item android:title="Save" android:id="@+id/file_save"/> <item android:title="Save as" android:id="@+id/file_saveas"/> <item android:title="Exit" android:id="@+id/file_exit"/> </menu> </item> <item android:title="Edit" android:id="@+id/edit"> <menu> <group> <item android:title="Copy" android:id="@+id/edit_copy"/> <item android:title="Paste" android:id="@+id/edit_paste"/> <item android:title="Cut" android:id="@+id/edit_cut"/> <item android:title="Delete" android:id="@+id/edit_delete"/> </group> </menu> </item> </menu>
2. 重寫Activity的onCreateOptionsMenu方法,通過MenuInflater.inflate方法來膨脹菜單XML。
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu_option, menu);
3. 在Activity的onOptionsItemSelected方法中處理每個(gè)菜單項(xiàng)的點(diǎn)擊事件:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
super.onOptionsItemSelected(item);
switch (item.getItemId()) {
case R.id.media_play:
break;
case R.id.media_pause:
break;
case R.id.file_open:
break;
case R.id.file_save:
…
}
return true;
}
在XML可以定義菜單項(xiàng)的圖標(biāo)、快捷鍵、checkbox等更多特征,了解更多請查閱SDK中關(guān)于菜單的主題。
演示的效果如圖:

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Android自定義WaveView實(shí)現(xiàn)波浪進(jìn)度效果
最近注意到百度外賣以及淘寶個(gè)人中心,都用到了類似水波起伏的效果,于是就參照網(wǎng)上的資料然后自己整改,自定義了一個(gè)waveView來實(shí)現(xiàn)這個(gè)效果,文中給出來詳細(xì)的實(shí)現(xiàn)原理及實(shí)例代碼,有需要的朋友們可以參考借鑒,下面來一起看看吧。2017-01-01
Android網(wǎng)絡(luò)編程之獲取網(wǎng)絡(luò)上的Json數(shù)據(jù)實(shí)例
這篇文章主要介紹了Android網(wǎng)絡(luò)編程之獲取網(wǎng)絡(luò)上的Json數(shù)據(jù)實(shí)例,本文用完整的代碼實(shí)例講解了在Android中讀取網(wǎng)絡(luò)中Json數(shù)據(jù)的方法,需要的朋友可以參考下2014-10-10
Android開發(fā)實(shí)現(xiàn)自動(dòng)切換文字TextSwitcher功能示例
這篇文章主要介紹了Android開發(fā)實(shí)現(xiàn)自動(dòng)切換文字TextSwitcher功能,結(jié)合實(shí)例形式詳細(xì)分析了Android使用TextSwitcher實(shí)現(xiàn)文字自動(dòng)切換的原理、實(shí)現(xiàn)方法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下2019-03-03
一文理解Android系統(tǒng)中強(qiáng)指針的實(shí)現(xiàn)
因?yàn)锳ndroid中很多地方代碼是用C++編寫,為了能夠保證C++中指針能夠被正確的釋放,于是Android引入了其實(shí)在C++中已經(jīng)有的智能指針技術(shù)2021-10-10
Android編程實(shí)現(xiàn)全局獲取Context及使用Intent傳遞對象的方法詳解
這篇文章主要介紹了Android編程實(shí)現(xiàn)全局獲取Context及使用Intent傳遞對象的方法,結(jié)合實(shí)例形式分析了Android全局Context的獲取及Intent傳遞對象的具體操作方法,需要的朋友可以參考下2017-08-08
Android10 分區(qū)存儲(chǔ)的適配規(guī)則
Android設(shè)備 在Sdk29己以上推出了分區(qū)存儲(chǔ),類似iOS沙箱。應(yīng)用App 目標(biāo)版本號(hào)為29或以上則需要適配分區(qū)存儲(chǔ),本文將具體的講解適配規(guī)則2021-05-05
Android實(shí)現(xiàn)圖片拖動(dòng)效果
本文主要介紹了Android實(shí)現(xiàn)圖片拖動(dòng)效果的實(shí)例,具有很好的參考價(jià)值。下面跟著小編一起來看下吧2017-03-03
Android使用Sensor感應(yīng)器獲取用戶移動(dòng)方向(指南針原理)
這篇文章主要介紹了Android使用Sensor感應(yīng)器獲取用戶移動(dòng)方向的方法,實(shí)例分析了指南針原理極其應(yīng)用,需要的朋友可以參考下2015-12-12

