《Android》『ActionBar』- ActionBar 的靜態與動態宣告方式

《Android Developers 參考文獻》

➥ActionBar

 

《簡單介紹》

所謂的 Action Bar,在 android 中就像是 windows 裡點開每個資料夾時,橫列於資料夾上方的工具列,通常我們會用來放置類似檔案總管的功能選項或者是設定介面的控制選項,透過在 Action Bar 上顯示的介面操作元件,進一步提升程式操作的便利性。

※從 Android 3.0 (API 級別 11) 開始,提供 Android 的裝置不再需要提供專屬的「選單」按鈕。 有此變更之後,Android 應用程式應可脫離對傳統有 6 個項目的選單面板的依賴,改為提供動作列來呈現一般的使用者動作。

 

《Action Bar 的使用條件》

Action Bar 是在 android 3.0 以後才加入的功能,因此在使用時必須確認程式專案的 AndroidManifest.xml 中所設定的 minSdkVersion 值大於 11 (android 3.0 的版本編號),不然會有語法錯誤提示。

 

《Action Bar 的顯示設定》

我們可以透過 getActionBar() 的方式,直接於程式中對 Action Bar 介面做設定。

直接於程式中對 Action Bar 介面做設定

其中當我們設定 setDisplayUseLogoEnable(true) 的時候,需搭配修改 AndroidManifest.xml 檔案,將所要使用的自訂圖案於其中設定好,相關程式碼片段如下 –

Androidmanifest.xml

此範例中,app_logo為我們自己定義的圖案,將之設定到<application>標籤中的 icon 即可。

 

《Option Menu 與 Action Item》

Action Bar 是由 Action Item 所組成,而 Action Item 是什麼呢?先來說說與它息息相關的 Option Menu,Option Menu 就是 android 程式的功能表選單,會在手機按下 Menu 鍵時出現在螢幕下方,而除了透過 Menu 鍵呼叫之外,我們通常會把於 Option Menu 中最常用的選項直接放置於 Action Bar 中,而這些放在 Action Bar 中的 Option Menu 選項,便稱為 Action Item。

※ Option Menu 的使用限制 :

選單最多只有兩層,且只能顯示文字。

 

《Option Menu 的建立與使用方式》

Option Menu 的建立方式有兩種,分別是靜態建立動態建立,其中靜態建立就是將選單選項直接定義在 res/menu 資料夾下的 .xml 格式檔中,而動態建立則是利用程式碼在 Menu 物件中逐一加入選單中的項目。不管是用哪一種方式建立,在建立過程中,我們都需要重新覆寫 onCreateOptionsMenu()onOptionsItemSelected() 這兩個狀態處理方法。

先來看動態建立的程式碼片段 –

動態建立 Option Menu 選單

當使用者按下 Menu 鍵時,系統會自動呼叫 onCreateOptionsMenu() 方法,並傳入一個 Menu 物件,透過 add() 與 addSubMenu()的方式,讓程式建立選單。建立好選單以後,當使用者點選其中某一個選項時,便會觸發 onOptionsItemSelected() 方法,並傳入使用者點選的項目,因此在這個方法內我們可以透過傳來的參數,讓程式執行對應的程式碼。

動態建立選單的好處是,可以在程式執行的過程中,更靈活的控制現有選單的內容,動態改變選單中的項目,但不可避免的會增加程式的長度,因此若是我們確定程式的選單是不會變動的,便可裡使用靜態建立的方式,來簡化程式碼。

來看看靜態建立的程式碼片段 –

在 res/menu 資料夾下,自訂名稱為 main_menu.xml 的格式檔

這邊要來說明一下 android:showAsAction=”ifRoom” 這個屬性,ifroom 代表若是 Action Bar 上還有空間,我們便會把這個選項從 Option Menu 中抽出來變成 Action Item,且預設會用圖片的方式顯示(icon),若是要加上項目名稱(title),再加上 withText 屬性即可。

android:showAsAction=[“ifRoom” | “never” | “withText” | “always” | “collapseActionView”]

ifRoom – 如果有空間則顯示該按鈕。

withText – 顯示文字。

never – 不將按鈕顯示在 ActionBar 上。

always – 總是將按鈕顯示在 ActionBar 上。

collapseActionView – 將按鈕組合到 ActionBar 中。

此設定亦可於程式碼中動態設定,範例如下 –

於程式碼中動態設定 android:showAsAction = “ifRoom|withText” 屬性

靜態建立 Option Menu 選單

當使用靜態建立選單的方式時,我們透過 getMenuInflater().inflate(),我們將已建立好的格式檔直接指定給 menu,在 onOptionsItemSelected() 方法中亦改用R.id 來區分所點選的選項,所呈現的程式碼略有不同,但基本上還是大同小異。

 

延伸閱讀:

Android 工作筆記總整理

賽肥膩膩

我們是低調到不行的肥膩夫妻檔,一路上一邊吵鬧一邊記錄著生活大小事,最近迷上了宅在家追劇,希望能透過文字將所有看過的影集好好紀錄,整理成屬於我們自己的回憶資料庫。

上 / 下一篇文章

臉書留言

一般留言

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *