歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Android菜單詳解

Android菜單詳解

日期:2017/3/1 10:34:13   编辑:Linux編程

菜單是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:

[html]

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <menu xmlns:android="http://schemas.android.com/apk/res/android">
  3. <item android:id="@+id/new_game"
  4. android:icon="@drawable/ic_new_game"
  5. android:title="@string/new_game" />
  6. <item android:id="@+id/help"
  7. android:icon="@drawable/ic_help"
  8. android:title="@string/help" />
  9. </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的選項菜單使用:

[java]

  1. @Override
  2. public boolean onCreateOptionsMenu(Menu menu) {
  3. MenuInflater inflater = getMenuInflater();
  4. inflater.inflate(R.menu.game_menu, menu);
  5. return true;
  6. }
方 法 getMenuInflater() 返回Activity的一個 MenuInflater ,使用這個對象,你可以調用 inflate(), 把菜單資源轉換為 菜單 對象.在這個例子中,菜單資源被inflate到方法onCreateOptionsMenu()的參數 Menu中. (這個方法在下一節會詳細討論).
Copyright © Linux教程網 All Rights Reserved