Android編程之菜單實現方法_Android

來源:互聯網
上載者:User

本文執行個體講述了Android編程之菜單實現方法。分享給大家供大家參考,具體如下:

菜單是許多應用程式不可或缺的一部分,Android中更是如此,所有搭載Android系統的手機都要有一個“menu”鍵,即菜單鍵,由此可見菜單在Android程式中的重要與特殊,其中Android的SDK提供了三種類型:分別為options menu(常規菜單),context menu(操作功能表)和submenu(子功能表)。其中options menu是通過按Menu鍵來顯示,context menu通過在view(視圖控制項上)按2秒之後才會顯示,這兩種菜單都可以嵌套子功能表,但是子功能表裡不能嵌套子功能表。

Options menu只能在螢幕最下面顯示六個菜單選項,這六個菜單叫做icon menu(表徵圖菜單),表徵圖菜單不能有checkable選項,多於6項的會以more icon menu菜單來調出,叫做expanded menu(擴充菜單).options menu(選項菜單)通過activity 的onCreateOptionsMenu來產生,這個函數只會在Menu第一次產生時調用,任何想要改變options menu的只能通過onPrepareOptionsMenu來實現,這個函數會在menu顯示之前被調用。onOptionsItemSeleted用來處理選中的options menu功能表項目

Context Menu是跟某個具體的view捆綁在一起的,在activity中用registerForContextMenu來為某個view註冊操作功能表。Context menu在顯示之前會調用onCreateContextMenu來產生menu,onContextItemSeleted用來處理選中的context menu 菜單。

Submenu是子功能表,可以嵌套在以上兩種菜單中,但是子功能表不能嵌套子功能表

Android還提供了對功能表項目進行分組的功能,可以把相似功能的菜單分在一組裡面,這樣就可以通過調用setGroupCheckable,setGroupEndable,setGroupVisible來設定屬性菜單,而不用單獨設定了。

1、下面是一個建立options menu 的例子:

首先在res裡建立一個menu檔案夾,裡面可以建立許多menu的資源檔,方便管理。在這個檔案夾裡建立一個Android的xml檔案,代碼如下:

<?xml version="1.0" encoding="utf-8"?><menu xmlns:android="http://schemas.android.com/apk/res/android" >  <item    android:id="@+id/newFile"    android:icon="@drawable/ic_launcher"    android:title="@string/newFile_title"/>  <item    android:id="@+id/ecit"    android:icon="@drawable/ic_launcher"    android:title="@string/exit_title"/></menu>

這裡建立了兩個菜單選項,每個item是一個菜單選項,其中的icon也可以不寫;title裡面的內容要在string檔案裡提前寫上,這是菜單的標題;最後在Activity裡面通過onCreateOptionsMenu方法建立這個菜單,然後通過onOptionsItemSelect方法來處理這個菜單。代碼如下:

package cn.csdn.android.menu;import android.app.Activity;import android.os.Bundle;import android.view.Menu;import android.view.MenuInflater;import android.view.MenuItem;import android.view.MenuItem.OnMenuItemClickListener;import android.widget.Toast;public class MenuTest1Activity extends Activity {/** Called when the activity is first created. */@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {MenuInflater inflater = getMenuInflater();inflater.inflate(R.menu.options_menu, menu);return true;}}

運行結果如下圖所示:

在螢幕的下方可以看到這兩個菜單。

2、在Activity中添加方法可以響應菜單的一些事件,通過上面的例子,在它的Activity中添加onOptionsItemSelected方法,可以是菜單完成它的功能,onOptionsItemSelected的代碼如下:

public boolean onOptionsItemSelected(MenuItem item) { switch(item.getItemId()){ case R.id.newFile: Toast.makeText(this,"new file",Toast.LENGTH_LONG).show(); break; case R.id.ecit: //Toast.makeText(this,"exit",Toast.LENGTH_LONG).show(); this.finish(); break;}

添加此方法後點擊“退出”按鈕可以退出,點擊“建立檔案”出現名為“new file”的對話方塊。
也可以用onMenuItemClick方法處理:代碼如下

public boolean onMenuItemClick(MenuItem item) {switch (item.getItemId()) {case R.id.newFile:Toast.makeText(this, "new file", Toast.LENGTH_LONG).show();break;case R.id.ecit:// Toast.makeText(this,"exit",Toast.LENGTH_LONG).show();this.finish();break;}return false;

功能和上一個方法一樣

3、建立子功能表,在xml檔案中插入菜單,下面的例子是在第二個菜單裡插入兩個菜單:xml檔案源碼如下:

<?xml version="1.0" encoding="utf-8"?><menu xmlns:android="http://schemas.android.com/apk/res/android" >  <item    android:id="@+id/menuitem1"    android:title="menuitem1"/>  <item    android:id="@+id/menuitem2"    android:title="menuitem2">    <menu >      <item        android:id="@+id/menuitem3"        android:title="menuitem3"/>      <item        android:id="@+id/menuitem4"        android:title="menuitem4">      </item>    </menu>  </item></menu>

4、帶單選或複選的子功能表,在建立菜單時添加setGroupCheckable方法,來確定添加的是單選還是複選:

public boolean onCreateOptionsMenu(Menu menu) {getMenuInflater().inflate(R.menu.second_menu, menu);SubMenu sm = menu.findItem(R.id.item3).getSubMenu();sm.setIcon(R.drawable.ic_launcher);// sm.setGroupCheckable(0, true, true);sm.getItem(0).setCheckable(true);sm.getItem(0).setChecked(true);this.menu = menu;return super.onCreateOptionsMenu(menu);}

希望本文所述對大家Android程式設計有所協助。

聯繫我們

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