天天看點

使用XML生成菜單 Android菜單詳解—-使用XML生成菜單 定義菜單資源檔案 使用MenuInflater添加菜單項 響應菜單項 更多菜單資源檔案的功能 結語

回顧前面的幾篇,我們都是直接在代碼中添加菜單項,給菜單項分組等,這是比較傳統的做法,它存在着一些不足。比如說,為了響應每個菜單項,我們需要用常量來儲存每個菜單項的ID等。為此,Android提供了一種更好的方式,就是把menu也定義為應用程式的資源,通過android對資源的本地支援,使我們可以更友善地實作菜單的建立與響應。這一篇就介紹如何使用XML檔案來加載和響應菜單,我們需要做這幾步:

在/res目錄下建立menu檔案夾

在menu目錄下使用與menu相關的元素定義xml檔案,檔案名是随意的,android會自動為其生成資源ID。例如:R.menu.mainmenu對應menu目錄的mainmenu.xml資源檔案

使用xml檔案的資源ID,将xml檔案中定義的菜單項添加到menu對象中

響應菜單項時,使用每個菜單項對應的資源ID

menu。

在res目錄下建立menu檔案夾,在menu下建立一個xml資源檔案,我這裡叫做mainmenu.xml

編寫mainmenu.xml如下:

<a href=""></a>

這裡簡單的添加了4個菜單項,并将其分為2組。item元素的android:title值可以引用values中的string資源。

inflater在android中建立了從資源檔案到對象的橋梁,MenuInflater即把菜單xml資源轉換為對象并添加到menu對象中,它可以通過activity的getMenuInflater()得到。我們在MainActivity中重寫onCreateOptionsMenu(...)方法。

最後重寫onOptionsItemSeleted(...)方法。

這一步最大的展現了使用XML生成菜單的好處。android不僅為我們定義的xml檔案生成了資源ID,同樣可以為group,menu item來自動生成ID(就像為布局中定義的view生成id那樣)。這樣菜單項ID的建立與管理就不用我們操心了,全部交給android去做吧!

至此,我們完成了一個簡單的“使用XML生成菜單”的demo,并從中體會到了使用資源檔案的好處,是以這是android中建立菜單的推薦方式。實際上,我們在代碼中對菜單項或分組的操作都能在xml檔案中完成,下面就簡單介紹一些比較常用的功能。(谷歌提供的API demos中有最全面的示例)

1.資源檔案實作子菜單

子菜單通過在item元素中嵌套menu來實作。

2.為菜單項添加圖示

3.設定菜單項的可選出現

使用android:checkableBehavior設定一組菜單項的可選政策,可選值為:none, all, single

使用android:checked設定特定菜單項

4.設定菜單項可用/不可用

5.設定菜單項可見/不可見

本篇是Android菜單詳解系列的最後一篇,本系列詳細介紹了android中各種常用菜單的使用技巧和注意事項,希望能幫助大家更好的了解,也期待與各位交流開發中的心得:)

繼續閱讀