一、 tabhost的基本開發流程
tabhost是一種非常實用的元件,可以很友善的在視窗上防止多個标簽頁,每個标簽頁相當于獲得了一個外部容器相同大小的元件擺放區域。
我們熟悉的手機電話系統“未接電話”、“已接電話”、“呼出電話”就可以使用tabhost實作。
1.1 與tabhost結合使用的元件
· tabwidget: 代表頁籤的标簽條。
· tabspec: 代表頁籤的一個tab頁面。
1.2 tabhost提供的建立頁籤方法
tabhost中常用方法;
· void addtab(tabhost.tabspec tabspec)
添加一個标簽頁
· int getcurrenttab()
擷取目前的标簽頁id
· string getcurrenttabtag()
擷取目前的标簽頁的tag
· tabhost.tabspec
newtabspec(string tag) 建立一個tabspec
· void setcurrenttab(int index)
設定一個标簽頁的id
· void setcurrenttabbytag(string tag)
設定一個标簽頁的tag
tabspec中常用的方法:
· string gettag()
setcontent(int viewid) 通過指定布局檔案,設定标簽頁的内容
setcontent(intent intent)
通過指定intent所指定的activity,設定标簽頁的内容
setindicator(charsequence label) 設定該标簽頁的标題
setindicator(charsequence label, drawable icon)
設定該标簽頁的标題和圖示
1.3 開發流程
· 在界面布局中定義tabhost元件,并為該元件定義該頁籤的内容
· activity應該繼承tabactivity。
· 調用tabactivity的gettabhost()方法擷取tabhost對象。
· 通過tabhost對象的方法來建立、添加頁籤。
二、 實作tabhost布局的通話記錄界面
1) 首先,我們定義tabhost需要顯示的xml界面:
對于上述布局檔案,我們有三個地方的id需要注意:
1. tabhost的id應該為@android:id/tabhost
2. tabwidget的id應該為@android:id/tabs
3. framelayout的id應該為@android:id/tabcontent
這三個id并不是程式員自定義的,而是android系統提供的,必須按照如此方法設定。
2) java代碼,将三個tab添加到容器中
效果圖:
說明; 如今,我們已經不再推薦使用tabactivity來建立标簽頁了,更加推薦使用fragment代替tabactivity,請看下章講解如何去實作fragment的tabhost。