Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> 跟我學Android之八 ActionBar與菜單

跟我學Android之八 ActionBar與菜單

編輯:關於Android編程

本章內容

第1節菜單概述 第2節選項菜單和子菜單 第3節上下文菜單 第4節使用XML定義菜單 第5節 ActionBar的作用 本章目標 了解各版本菜單的特征。 掌握創建選項菜單的方法。 掌握菜單事件的處理方法。 掌握動態改變菜單的方法。 掌握創建上下文菜單的方法。 熟悉擴展上下文菜單的方法。 了解ActionBar的作用。 Android系統中的菜單 u菜單通常有兩種情況:選項菜單和上下文菜單 ?與Activity相關的叫選項菜單,在顯示Activity時按MENU鍵彈出 ?與具體視圖相關的菜單叫上下文菜單,長按視圖將彈出 選項菜單是個當前Activity關聯的菜單 u對於Android2.3.x及以前的版本 ?通過設備的“菜單”按鈕彈出 ?出現在屏幕底部 u對於Android3.x及以後的版本 ?出現在ActionBar的右端 ?點擊ActionBar的右端或設備上的“菜單”按鈕彈出 ?菜單項可以出現在ActionBar上 u可以在Activity的子類和Fragment的子類中定義選項菜單 ?如果兩者都定義了,那麼在顯示的時候將會合並兩者的菜單 ?合並顯示時先顯示Activity的菜單 添加菜單或子菜單的步驟如下: ?重寫Activiiy的OnCreateOptionsMenu(Menu menu)的方法,在該方法裡調用Menu對象的方法來添加菜單項或子菜單。 ?如果希望應用程序能響應菜單項的單擊事件,重寫Activity的onOptionsItemSelected (MenuItem mi)方法即可。

 

 
   
public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main, menu);
        this.menu = menu; 
        return true;
}
u通過按鈕事件或者其他事件實現添加菜單的任務
?Menu類中提供了add方法可以用途添加菜單 ?Menu類中提供了removeItem方法用於刪除菜單
menu.add(groupId, itemId, order, titleRes);
 
添加普通菜單項並綁定事件
public boolean onCreateOptionsMenu(Menu menu) {
		//添加普通菜單項
		menu.add(0, Menu.FIRST, 1, "添加");
		menu.add(0,Menu.FIRST+1,2,"編輯");
		menu.add(0,Menu.FIRST+2,3,"保存");
		return true;
	}
public boolean onOptionsItemSelected(MenuItem item) {
		//判斷單擊的是哪個菜單項,並作出響應
		switch(item.getItemId()){
		case Menu.FIRST:
			break;
		//……
		}
		return super.onOptionsItemSelected(item);	}

添加子菜單

public boolean onCreateOptionsMenu(Menu menu)
	{
	SubMenu colorMenu = menu.addSubMenu("字體顏色");
		colorMenu.setIcon(R.drawable.color);
		// 設置菜單頭的圖標
		colorMenu.setHeaderIcon(R.drawable.color);
		// 設置菜單頭的標題
		colorMenu.setHeaderTitle("選擇文字顏色");
		colorMenu.add(0, FONT_RED, 0, "紅色");
		colorMenu.add(0, FONT_GREEN, 0, "綠色");
		colorMenu.add(0, FONT_BLUE, 0, "藍色");
		return super.onCreateOptionsMenu(menu);
	}
 
初始化選項菜單項事件
u當用於選擇一個菜單項時,onOptionsItemSelected()方法會執行 ?參數為MenuItem的對象 ?通過調用MenuItem的getItemId()方法可以獲得菜單項的ID ?以選中的菜單項ID為標准判斷和處理事件

\

創建上下文菜單 創建上下文菜單的步驟如下 u重寫Activity 的onCreateContextMenu menu, View source, ContextMenu Context.MenuInfo menulnfo)方法。 u調用Activity的registerForContextMenu(View view)方法為view組件注冊上下文菜單。 u如果希望應用程序能為菜單項提供響應,可以重寫OnContextItemSelected(MenuItem item)方法,或為指定菜單項綁定事件監聽器。 添加上下文菜單並綁定事件
public void onCreateContextMenu(ContextMenu menu, View source,
		ContextMenu.ContextMenuInfo menuInfo)
	{
		menu.add(0, MENU1, 0, "紅色");
	}
	public boolean onContextItemSelected(MenuItem mi)
	{
		switch (mi.getItemId())
		{
			……	
		}
		return true;
	}
為view組件注冊上下文菜單 txt = (TextView) findViewById(R.id.txt); // 為文本框注冊上下文菜單 registerForContextMenu(txt);
XML布局菜單 選項菜單的布局定義 u選項菜單的資源定義在/res/menu下

u使用

 

標簽定義菜單

u使用標簽定義菜單項,常用屬性如下 ?android:id 定義菜單項的ID ?android:icon 定義菜單項的圖標 ?android:title 定義菜單項的標題文字 ?android:showAsAction 定義菜單項何時顯示為一個ActionItem l取值:ifRoom | never | withText | always | collapseActionView u u     選項菜單的布局定義示例


	 

在Activity中覆蓋onCreateOptionsMenu,加載選項菜單
public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
}
 
控制菜單項的顯示 u在布局菜單的時候可以通過屬性確定菜單項是否顯示 ?很多情況下,我們需要在特殊情況下才顯示菜單項 ?初始時往往選擇將菜單項隱藏 l只需要給item添加android:visible屬性,l取值為false 選項菜單支持子菜單 u子菜單的定義只要在布局中的item標簽內嵌入menu就可以實現

    

\

    

\
 
                <item android:id="@+id/action_mail” android:orderInCategory=" 100"="" android:showasaction="never“ android:icon=" @drawable="" mail"="" android:title="@string/action_mail” />
    

\
 
創建上下文菜單


	 
 
單選框菜單 構建單選框菜單 u在菜單布局中有一個標簽叫,其常用屬性如下: ?android:checkableBehavior 用於定義group中菜單項的可選特征 lsingle 表示菜單項為單選 lall 表示所有菜單項都是可勾選的(復選框) lnone 表示所有菜單項都不可勾選 u使用group標簽實現單選框菜單 ?為menu標簽添加子標簽group ?設置group的屬性android:checkableBehavior=“single” ?在group標簽中添加item標簽定義單選菜單項 l在一些低的版本中,單選菜單項不能設置icon
\
構建單選框菜單 u單選框布局示例


	 
 
復選框菜單 構建復選框菜單 u使用group標簽實現復選框菜單 ?為menu標簽添加子標簽group ?設置group的屬性android:checkableBehavior=“all” ?在group標簽中添加item標簽定義單選菜單項 l在一些低的版本中,單選菜單項不能設置icon u也可以直接為單個菜單項設置復選框 ?設置item的屬性android:checkable=“true” ?
 
構建復選框菜單 u復選框布局示例


	 


\


ActionBar概述 ActionBar誕生於Android3.0版本 u主要用於代替原來的標題欄 u可以在標題欄上展現更多的內容和功能 ?顯示選項菜單 ?提供標簽頁切換方式的導航 ? ? ?提供下拉的導航條目 ?提供交互式活動視圖代替選項條目 ? ? ? ? ?使用程序的圖標作為返回Home主屏或向上的導航操作
\
ActionBar可以帶給用戶明確的動作提示和全局導航 u在需要在界面上明確提示用戶動作的情況下 u在需要進行全局導航的情況下 u統一顯示界面重要功能 ?比如:搜索、新建、分享等功能出現在顯著位置便於使用
 
在系統應用中,很多都采用了ActionBar u比如編寫新短信功能
 

\

  

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved