天天看點

Android官方開發文檔Training系列課程中文版:添加ActionBar之添加Action按鈕

ActionBar允許在目前的APP上下文内添加很多重要的功能按鈕。這樣便可以通過圖示或者文字作為功能按鈕直接展示在ActionBar上。功能按鈕如果沒有足夠空間或無足輕重的按鈕都會隐藏在隐藏按鈕下。

為每一個需要添加到ActionBar的按鈕添加一個< item>标簽:

這裡聲明了當ActionBar有可用空間的時候Search功能應該作為一個按鈕放在ActionBar上。但是設定按鈕會總是出現在下拉清單中(預設情況下,所有的功能都會出現在下拉清單中,這對于每一個功能顯示的聲明你的設計意圖是最好的鍛煉)。

icon屬性這裡要求一個圖檔的資源ID,這裡跟的是@drawable/name,這裡的name必須是儲存在工程中res/drawable/目錄下儲存的位圖圖像名稱。比如”@drawable/ic_action_search”就是引用了一個名為ic_action_search.png的圖檔資源。很相似的,title屬性也是使用了一個在XML檔案中定義的字元串資源。

Note:當為應用建立圖示或者其它的位圖圖像時,drawable檔案夾對于提供不同版本的螢幕密度資源來說是很重要的一點。

如果為了相容像Android 2.1這種低版本而使用了支援庫,showAsAction屬性對于命名空間android:是不可用的。如果要使用支援庫的話必須要在XML中定義自定義的XML命名空間辨別符,然後再使用這個命名空間的辨別符(自定義的XML命名空間應該基于應用的名稱,如果隻是在這個檔案下操作的話,可以命名為你想命名的任何名稱):

為了将菜單按鈕直接放置到ActionBar上,需要重寫實作activity中的onCreateOptionsMenu()方法,然後加載菜單資源到回調方法的參數menu對象中:

當使用者點選了其中一個功能按鈕或者其它下拉清單中按鈕之後,然後系統會調用activity中的

onOptionsItemSelected()方法。在實作的這個方法中,調用回調參數MenuItem的getItemId()方法傳回的值與ID進行比對,去決定是哪個功能按鈕按下的。這裡的ID便是在XML中聲明的< item>标簽中的android:id屬性中定義的。

Note:Gmail的傳回按鈕

應用中的所有Activity不都是應用的主入口,是以應該在ActionBar上提供一個傳回按鈕,以便讓使用者可以通過點選傳回按鈕傳回到上一個螢幕頁面。

當運作在Android 4.1或者更高版本上,又或者是使用了ActionBarActivity的支援庫的應用,可以在清單檔案中簡單的申明ActionBar的傳回按鈕所要傳回的界面:

然後通過setDisplayHomeAsUpEnabled()設定傳回按鈕為可用狀态:

因為現在系統知道了DisplayMessageActivity的父界面為MainActivity,當使用者按下了傳回按鈕,然後系統會适當的導航界面到MainActivity,是以你不需要自己處理傳回按鈕的點選事件。

繼續閱讀