程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 更多關於編程 >> 使用xml布局菜單

使用xml布局菜單

編輯:更多關於編程

     目前為止我們都是通過硬編碼來增加菜單項的,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

    使用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"/> 

     

    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved