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 中控制標簽元素的選擇。



By:AsionTang

At:2013年9月27日 10:29:08


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM