使用xml布局菜單

來源:互聯網
上載者:User

 目前為止我們都是通過寫入程式碼來增加功能表項目的,android為此提供了一種更便利的方式,就是把menu也定義為應用程式的資源,通過android對資源的本地支援,使我們可以更方便地實現菜單的建立與響應。這一篇就介紹如何使用XML檔案來載入和響應菜單,我們需要做這幾步: 一般我們都是通過寫入程式碼來增加功能表項目的,例如我們之前介紹的。google為此提供了一種更便利的方式,就是

在/res目錄下建立menu檔案夾
在menu目錄下使用與menu相關的元素定義xml檔案,檔案名稱任意,android會自動為其產生資源ID。例如:R.menu.itemmenu對應menu目錄的itemmenu.xml資源檔
使用xml檔案的資源ID,將xml檔案中定義的功能表項目添加到menu對象中去
響應功能表項目時,使用每個功能表項目對應的資源ID
(一)定義資源檔

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

編寫main_menu.xml如下:

<?xml version="1.0" encoding="utf-8"?>
<menu
xmlns:android="http://schemas.android.com/apk/res/android">
<!-- group1 -->
<group android:id="@+id/group1">
<item android:id="@+id/mi1"
android:title="item1"/>
<item android:id="@+id/mi2"
android:title="item2"/>
</group>
<!-- group 2 -->
<group android:id="@+id/group2">
<item android:id="@+id/mi3"
android:title="item3"/>
<item android:id="@+id/mi4"
android:title="item4"/>
</group>
</menu>

這裡簡單的添加了4個功能表項目,並將其分為2組。item元素的android:title值可以引用values中的string資源。

 

(二)使用MenuInflater添加功能表項目

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


@Override
publicboolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.mainmenu, menu);
returntrue;
}
(三)響應菜單
最後重寫onOptionsItemSeleted(...)方法。


@Override
publicboolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId()) {
case R.id.mi1:
// do sth
break;
case R.id.mi2:
// do sth
break;
case R.id.mi3:
// do sth
break;
case R.id.mi4:
// do sth
break;
}
returntrue;
}
這一步最大的體現了使用XML產生菜單的好處。android不僅為我們定義的xml檔案產生了資源ID,同樣可以為group,menu item來自動產生ID(就像為布局中定義的view產生id那樣)。

至此,我們完成了一個簡單的“使用XML產生菜單”的demo,並從中體會到了使用資源檔的好處,因此這是android中建立菜單的推薦方式。實際上,我們在代碼中對功能表項目或分組的操作都能在xml檔案中完成,下面就簡單介紹一些比較常用的功能。

(五)更多菜單資源的功能
1.資源檔實現子功能表

子功能表通過在item元素中嵌套menu來實現。


<item android:title="系統設定">
<menu>
<item android:id="@+id/mi_display_setting"
android:title="顯示設定"/>
<item android:id="@+id/mi_network_setting"
android:title="網路設定"/>
<!-- 別的功能表項目 -->
</menu>
</item>
2.為功能表項目添加表徵圖

<item android:id="@+id/mi_exit"
android:title="退出"
android:icon="@drawable/exit"/>
3.設定功能表項目的可選出現

使用android:checkableBehavior設定一組功能表項目的可選策略,可選值為:none, all, single


<group android:id="..."
android:checkableBehavior="all">
<!-- 功能表項目 -->
</group>
使用android:checked設定特定功能表項目

<item android:id="..."
android:title="sometitle"
android:checked="true"/>
4.設定功能表項目可用/不可用

<item android:id="..."
android:title="sometitle"
android:enabled="false"/>
5.設定功能表項目可見/不可見


<item android:id="..."
android:title="sometitle"
android:visible="false"/> 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.