Android學習筆記:TabHost 和 FragmentTabHost

TabHost
    命名空間:
        android.widget.TabHost
    初始化函數(必須在addTab以前調用):
        setup();
    包含兩個子元素:
        1.Tab標籤容器TabWidget(@android :id/tabs)
        2.Tab內容容器FrameLayout(@android :id/tabcontent)

FragmentTabHost
    命名空間:
        android.support.v4.app.FragmentTabHost
        android.support.v13.app.FragmentTabHost
    初始化函數(必須在addTab以前調用):
        setup(this, getSupportFragmentManager(), R.id.realtabcontent);
    包含三個子元素:
        1.Tab標籤 容器TabWidget(@android :id/tabs)
        2.Tab內容 容器FrameLayout [寬高皆爲0dp](@android :id/tabcontent)
        3.Tab內容 容器FrameLayout [真正的容器](@+id/RealTabContent)

疑問:爲何同時存在TabContent 和 RealTabContent 兩個FrameLayout?
答疑:《關於FragmentTabHost中TabWidget不能移到屏幕下面的Bug》
        http://blog.csdn.net/wklbeta/article/details/11329207

資料:《Android開發:使用Fragment改造TabActivity》
        http://www.blogjava.net/amplifier/archive/2012/12/27/393409.html

經驗 - 實現Tab功能的幾種方式:
        1.(廢棄)繼承自TabActivity + TabHost 佈局 + Activity 內容
                1.1:TabActivity爲ActivityGroup[在版本13裏被放棄]子類
                1.2:使用getTabHost() 得到TabHost 對象
                1.3:使用 newTabSpec(...).setContent(Intent) 添加Tab標籤與內容

        2.(廢棄)繼承自ActivityGroup + TabHost佈局 + Activity 內容
                2.1:ActivityGroup在版本13裏被放棄
                2.2:使用findViewById 得到TabHost 對象
                2.3:使用setup(new LocalActivityManager(this, true))初始化
                2.4:使用 newTabSpec(...).setContent(Intent) 添加Tab標籤與內容

        3.(簡單)繼承自FragmentActivity + FragmentTabHost 佈局 + Fragment 內容
                3.1:使用findViewById 得到FragmentTabHost 對象
                3.2:使用setup(this, getSupportFragmentManager(), R.id.realtabcontent)初始化
                3.3:使用addTab(newTabSpec().setIndicator(),Fragment.class, null) 添加Tab標籤與內容

        4.(複雜)繼承自FragmentActivity + TabHost 佈局 + ViewPager佈局 + Fragment 內容
                4.1:使用findViewById 得到TabHost 對象
                4.2:使用setup()初始化
                4.3:使用TabHost.addTab(tabSpec.setContent(DummyTabFactory));添加Tab標籤與空內容
                4.4:在TabHost.onTabChanged中控制ViewPager的實際顯示
                4.5:滑動時在ViewPager.onPageSelected 中控制Tab標籤的選擇。
                PS:當Tab標籤數量固定且不追求和系統保持一致的標籤效果,的狀況下這裏的TabHost佈局有些多餘。
                如 :特有應用須要的Tab標籤固定,且有本身的一套顯示效果,那麼這裏徹底無需TabHost佈局。

        5.(DIY)繼承自FragmentActivity + 自定義佈局 + ViewPager佈局 + Fragment 內容
                5.1:自定義佈局中嵌入固定Tab標籤元素
                5.2:在標籤元素點擊事件中控制ViewPager的實際顯示
                5.3:滑動時在ViewPager.onPageSelected 中控制標籤元素的選擇。html

相關文章
相關標籤/搜索