一.繼承關係 二.概述 TAB的容器。這個對象包含兩個子元素: 三.常用方法 四.三個內部類 TabHost.TabSpec tab(標簽)有一個indicator,content後臺tag.例如: 1.indicator 有三個重載的方法可以設置標簽的名字和圖案。返回值都是TabHost.TabS ...
一.繼承關係
java.lang.Object
↳ android.view.View
↳ android.view.ViewGroup
↳ android.widget.FrameLayout
↳ android.widget.TabHost
二.概述
TAB的容器。這個對象包含兩個子元素:
- TabWidget:管理標簽(tabs),用戶點擊來選擇一個特定的標簽,是它告訴TabHost去切換界面的
- FrameLayout:對象顯示該頁的內容
三.常用方法
- public void addTab(TabHost.TabSpec tabSpec)
- public void setup ():在addTab之前要先調用setup
四.三個內部類
- class:TabHost.TabSpec
- interface:TabHost.OnTabChangeLisetener
- interface:TabHost.TabContentFactory
TabHost.TabSpec
tab(標簽)有一個indicator,content後臺tag.例如:
tabHost.addTab(tabHost.newTabSpec("tab_time").setIndicator("時鐘").setContent(R.id.tab_time));
1.indicator
有三個重載的方法可以設置標簽的名字和圖案。返回值都是TabHost.TabSpec
- setIndicator(CharSequence label)
- setIndicator(View view)
- setIndicator(CharSequence lable,Drawable icon)
content
返回值都是TabHost.TabSpe。是第一個比較常用。
- **setContent(int viewId)**傳入視圖的ID與之關聯起來
- setContet(Intent intent)在TabHost.TabContentFactory創建的這個視圖的內容
- setContent((TabHost.TabContentFactory contentFactory)
tag
這是相當於一個tag的身份證,在 new TabSpec(String tag)決定了
五.例子
六.源碼大觀
public class TabHost...{ //常用屬性 private TabWidget mTabWidget; private FrameLayout mTabContent; private List<TabSpec> mTabSpecs = new ArrayList<TabSpec>(2); private OnKeyListener mTabKeyListener; public void setup(){ //這裡實例化TabWiget mTabWidget = (TabWidget) findViewById(com.android.internal.R.id.tabs); if (mTabWidget == null) { throw new RuntimeException( "Your TabHost must have a TabWidget whose id attribute is 'android.R.id.tabs'"); } .... mTabWidget.setTabSelectionListener(new TabWidget.OnTabSelectionChanged() { public void onTabSelectionChanged(int tabIndex, boolean clicked) { setCurrentTab(tabIndex); if (clicked) { mTabContent.requestFocus(View.FOCUS_FORWARD); } } }); mTabContent = (FrameLayout) findViewById(com.android.internal.R.id.tabcontent); if (mTabContent == null) { throw new RuntimeException( "Your TabHost must have a FrameLayout whose id attribute is " + "'android.R.id.tabcontent'"); } } }
註意:在自定義自己的TabHost的時候,Tabwiget和FrameLayout不可以自定義Id。為它需要在setup裡面實例化,因此需要在addTab添加內容之前調用setup方法