天天看點

《Android平闆電腦開發秘籍》——3.8節技巧:建立一個Tab頁式的ActionBar

本節書摘來自異步社群《android平闆電腦開發秘籍》一書中的第3章,第3.8節技巧:建立一個tab頁式的actionbar,作者 【印度】b.m. harwani,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視

3.8 技巧:建立一個tab頁式的actionbar

android平闆電腦開發秘籍

tab頁式的actionbar類似于自定義事件處理方法的按鈕,它被設計成與fragment manager一起使用。為了在actionbar中顯示導航tab頁,請調用setnavigationmode()方法,把值actionbar.navigation_mode_tabs作為參數傳入,如下所示:

指定了導航模式後,通過調用actionbar 的addtab()方法可以添加tab頁,如下所示:

以上代碼建立了一個tab頁,把它的标題設為“create”,給它綁定了一個tablistener,最後把建立的tab頁添加到actionbar中去。例如,這裡用settext()方法設定了tab頁的标題。可以調用seticon()方法來為tab頁定義一個圖示。你還可以調用setcontentdescription()方法設定tab頁的更多細節資訊。

示例:

這段代碼給actionbar添加了一個tab頁面,标題為“create”。與此tab頁關聯的圖示是預設圖示ic_launcher,詳細的描述資訊是“creating the invoice”。當點選tab頁時,事件由tablistener進行處理,完成所需的任務。

現在将通過一個實際的例子來了解tab頁式actionbar的概念。請建立一個名為的actionbartabapp android項目。在這個應用程式中,将建立兩個tab頁:create和update。當選中一個tab頁時,對應的fragment将會被激活,并顯示一段文字資訊表示該fragment被激活了。兩個fragment的view将會通過單獨的xml layout檔案顯示。是以請在res/layout檔案夾下分别添加兩個名為createfragment.xml和updatefragment.xml的xml檔案。

請在createfragment.xml中寫入代碼清單3-11給出的代碼。

代碼清單3-11 寫入createfragment.xml檔案的代碼

可以看到,上述layout檔案定義了一個textview,初始時顯示文字“this is create fragment”。顯示此資訊即表示第一個fragment被激活了。類似地,在updatefragment.xml檔案中寫入代碼清單3-12給出的代碼。

代碼清單3-12 寫入updatefragment.xml檔案的代碼

同樣,在layout檔案中為第二個fragemt定義了一個textview控件。此textview初始時顯示文字“this is update fragment”,表示第二個fragemt被激活了。

為了在選中action tab頁時能夠顯示相應fragemt的内容,需要在activity layout檔案中定義一個fragemt容器。是以,在activity layout檔案activity_action_bar_tab_app.xml中寫入代碼清單3-13所示的代碼。

代碼清單3-13 寫入activity layout檔案activity_action_bar_tab_app.xml的代碼

為了載入兩個fragment的view,請在android項目的包com.androidtablet.action bartabapp中添加兩個java類檔案:createactivity.java和updateactivity.java。

為了從layout檔案createfragment.xml中載入view,請把代碼清單3-14給出的代碼寫入createactivity.java檔案。

代碼清單3-14 寫入createactivity.java檔案的代碼

同樣,為了從layout檔案updatefragment.xml載入view,請把代碼清單3-15給出的代碼寫入updateactivity.java檔案。

代碼清單3-15 寫入updateactivity.java檔案的代碼

接下來,需要在主activity檔案actionbartabappactivity.java中寫入一些java代碼,以完成以下任務。

在應用程式中定義兩個tab頁:create和update。

定義tab頁偵聽器并與兩個tab頁關聯。

當相應的tab頁被點選時,激活fragment create和update。

為了完成上述所有任務,把代碼清單3-16所給出的代碼寫入java activity檔案actionbartab appactivity.java中。

代碼清單3-16 寫入java activity檔案actionbartabappactivity.java的代碼

可以看到,調用getactionbar()方法建立了actionbar對象。為了讓actionbar以 tab頁的方式顯示,把它的導航模式設成了actionbar.navigation_mode_tabs。可以在setdisplayshowtitleenabled()方法傳入布爾值false,來隐藏activity的标題。然後,建立兩個标簽為create和update的tab頁,并添加到actionbar中。

事件偵聽器tablistener與兩個tab頁都關聯。不管選中哪一個tab頁,ontabselected()方法都會被調用,并打開預設的fragment。ontabselected()方法激活相應的fragment,把定義于layout檔案的view顯示出來。當tab頁被選中時,ontabunselected ()方法也會被調用,那些沒有被選中的tab頁将作為參數傳入。與未選中tab頁關聯的fragment将會從堆棧中移除,這些fragment變為不可見。

ontabunselected ()方法将顯示未選中tab頁的位置1。運作此應用程式後,你将看到tab頁式actionbar顯示了兩個tab頁:create和update。當你選擇create頁後,與之相關聯的fragment将會被激活,顯示出一條資訊“this is create fragment”,如圖3-8上所示。類似地,在選擇update頁後,與之關聯的fragment将會被激活,顯示出文字資訊“this is update fragment”,如圖3-8下所示。

《Android平闆電腦開發秘籍》——3.8節技巧:建立一個Tab頁式的ActionBar

繼續閱讀