android菜單詳解一:概述

來源:互聯網
上載者:User

菜單是Activity的一個重要組成部分。它為使用者操作提供了很爽的途徑。Android提供了一個簡單的架構來向程式中添加標準菜單 .

共有三種菜單:

選項菜單

一個activity的功能表項目們的主要集合。當你按MENU按鈕時(硬體上的)就會出現。如果你的程式跑在 Android 3.0或以上,你可以通過把功能表項目作為 "action items"直接放在Actiion Bar上來提供快速選擇能力。

快顯功能表

一列浮動的功能表項目們,當使用者對一個註冊了快顯功能表的View按住不放時就會出現。

子功能表

也是一列浮動的功能表項目們,當使用者點擊一個包含嵌入菜單的功能表項目時出現。

本文檔闡明怎樣建立各類型的菜單,怎樣使用XML來定義菜單的內容以及如何在Activity中定義回呼函數來響應功能表項目。

建立一個菜單資源

你需要在一個XML 菜單資源中定義一個菜單而不是在代碼中,然後在代碼中inflate這個菜單資源。使用菜單資源來定義菜單是一個很佳的做法,因為這樣可以使介面與代碼分離。並且在XML中更容易設計你的菜單。

要建立一個菜單資源,先在你項目的res/menu/下建立一個XML檔案,然後用以下元素建立菜單:

<menu>

定義一個菜單,它是功能表項目的容器。 <menu>必須是檔案的根節點,其內部可包含一個或多個<item>和<group> 元素。

<item>

建立一個功能表項目。功能表項目中可以繼續包含<menu>元素,此時它就具有了子功能表。

<group>

一個可選的,不可見的,容納<item> 元素的容器。它使你能夠對功能表項目進行分類,從而使同類的功能表項目共用一些屬性,比如活動狀態,可見狀態等。請看 Menu groups節。

以下是一個菜單的例子,菜單名為 game_menu.xml:

<?xml version="1.0" encoding="utf-8"?><br /><menu xmlns:android="http://schemas.android.com/apk/res/android"><br /> <item android:id="@+id/new_game"<br /> android:icon="@drawable/ic_new_game"<br /> android:title="@string/new_game" /><br /> <item android:id="@+id/help"<br /> android:icon="@drawable/ic_help"<br /> android:title="@string/help" /><br /></menu>此例中定義了兩個功能表項目,每個包含屬性有:
android:id
一個資源ID來標誌功能表項目,當使用者選擇某個功能表項目時,程式可以用這個ID來識別這個功能表項目.
android:icon
引用一個drawable用於功能表項目的表徵圖。
android:title
引用一個字串用於功能表項目的標題。

還有很多可以在<item>中使用的屬性,還包含指定功能表項目如何在Action Bar中顯示的屬性。更多關於XML文法和菜單資源屬性的知識,請看 Menu Resource節。

Inflating 一個菜單資源

在 代碼中,使用方法 MenuInflater.inflate()你可以inflate(把一個XML資源轉換為程式中的對象)一個菜單資.例如,下面的代碼在回調方法 onCreateOptionsMenu()中把檔案 game_menu.xml inflate成一個菜單對象,從而作為這個Activity的選項菜單使用:

@Override<br />public boolean onCreateOptionsMenu(Menu menu) {<br /> MenuInflater inflater = getMenuInflater();<br /> inflater.inflate(R.menu.game_menu, menu);<br /> return true;<br />}方 法 getMenuInflater() 返回Activity的一個 MenuInflater ,使用這個對象,你可以調用 inflate(), 把菜單資源轉換為 菜單 對象.在這個例子中,菜單資源被inflate到方法onCreateOptionsMenu()的參數 Menu中. (這個方法在下一節會詳細討論).

相關文章

聯繫我們

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