跟我學Android之八 ActionBar與菜單

視頻課:https://edu.csdn.net/course/play/7621
android

本章內容app

第1節菜單概述ide

第2節選項菜單和子菜單佈局

第3節上下文菜單字體

第4節使用XML定義菜單this

第5節  ActionBar的做用spa


本章目標.net

瞭解各版本菜單的特徵。orm

掌握建立選項菜單的方法。視頻

掌握菜單事件的處理方法。

掌握動態改變菜單的方法。

掌握建立上下文菜單的方法。

熟悉擴展上下文菜單的方法。

瞭解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使用<menu>標籤訂義菜單

u使用<item>標籤訂義菜單項,經常使用屬性以下

Øandroid:id 定義菜單項的ID

Øandroid:icon 定義菜單項的圖標

Øandroid:title 定義菜單項的標題文字

Øandroid:showAsAction 定義菜單項什麼時候顯示爲一個ActionItem

l取值:ifRoom | never | withText | always | collapseActionView

u

u

選項菜單的佈局定義示例

<menu xmlns:android="http://schemas.android.com/apk/res/android" ><itemandroid:id="@+id/action_settings"android:orderInCategory="100"android:showAsAction="never"android:icon="@drawable/home"android:title="@string/action_settings"/><itemandroid:id="@+id/action_add"android:orderInCategory="101"android:showAsAction="never"android:icon="@drawable/add"android:title="@string/action_add"/></menu>



在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_right"android:orderInCategory="103「  android:showAsAction="never"android:icon="@drawable/right「  android:title="@string/action_right"><menu ><item android:id="@+id/action_mail」 android:orderInCategory="100"android:showAsAction="never「 android:icon="@drawable/mail"android:title="@string/action_mail」 />        </menu>    </item>



建立上下文菜單




<menu xmlns:android="http://schemas.android.com/apk/res/android" ><itemandroid:id="@+id/action_copy"android:orderInCategory="100"android:showAsAction="never"android:icon="@drawable/copy"android:title="@string/action_copy"/><itemandroid:id="@+id/action_past"android:orderInCategory="101"android:showAsAction="never"android:icon="@drawable/past"android:title="@string/action_past"/></menu>


單選框菜單





構建單選框菜單

u在菜單佈局中有一個標籤叫<group>,其經常使用屬性以下:

Øandroid:checkableBehavior 用於定義group中菜單項的可選特徵

lsingle 表示菜單項爲單選

lall 表示全部菜單項都是可勾選的(複選框)

lnone 表示全部菜單項都不可勾選

u使用group標籤實現單選框菜單

Ø爲menu標籤添加子標籤group

Ø設置group的屬性android:checkableBehavior=「single」

Ø在group標籤中添加item標籤訂義單選菜單項

l在一些低的版本中,單選菜單項不能設置icon

 




構建單選框菜單

u單選框佈局示例

<menu><group android:checkableBehavior="single" ><item  …… android:title="@string/action_add"/><item  …… android:title="@string/action_sub"/></group></menu>



複選框菜單


構建複選框菜單

u使用group標籤實現複選框菜單

Ø爲menu標籤添加子標籤group

Ø設置group的屬性android:checkableBehavior=「all」

Ø在group標籤中添加item標籤訂義單選菜單項

l在一些低的版本中,單選菜單項不能設置icon

u也能夠直接爲單個菜單項設置複選框

Ø設置item的屬性android:checkable=「true」

Ø





構建複選框菜單

u複選框佈局示例

<menu><group android:checkableBehavior=「all" ><item  …… android:title="@string/action_add"/><item  …… android:title="@string/action_sub"/></group></menu>


 


ActionBar概述




ActionBar誕生於Android3.0版本

u主要用於代替原來的標題欄

u能夠在標題欄上展示更多的內容和功能

Ø顯示選項菜單

Ø提供標籤頁切換方式的導航

Ø

Ø

Ø提供下拉的導航條目

Ø提供交互式活動視圖代替選項條目

Ø

Ø

Ø

Ø

Ø使用程序的圖標做爲返回Home主屏或向上的導航操做

 




ActionBar能夠帶給用戶明確的動做提示和全局導航

u在須要在界面上明確提示用戶動做的狀況下

u在須要進行全局導航的狀況下

u統一顯示界面重要功能

Ø好比: 搜索、新建、分享等功能出如今顯著位置便於使用






在系統應用中,不少都採用了ActionBar

u好比編寫新短信功能



相關文章
相關標籤/搜索