Android FragmentTabHost 使用方法詳解

jopen 8年前發布 | 50K 次閱讀 Android開發 移動開發

FragmentTabHost作為Android4.0版本的控件, 已經被項目廣泛使用, 5.0版本又推出TabLayout+viewPager顯示多頁. 我來講解如何使用FragmentTabHost.

Github下載地址

FragmentTabHost使用方法

主要包括:

(1) 自定義Tab的圖片資源和去掉分割線.
(2) 緩存Fragment的布局, 減少填充.

在切換頁面時, 控件會調用Fragment的onCreateView, 重新創建頁面.
通過緩存頁面, 可以增強性能.

</blockquote>

1. 布局

FragmentTabHost是原生控件, 并不需要添加其他的maven庫.

包括標簽組Tabs和頁面TabContainer, 標簽組固定大小, 頁面填充.

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.app.FragmentTabHost
    android:id="@android:id/tabhost"
    xmlns:android="

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <TabWidget
        android:id="@android:id/tabs"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:layout_gravity="bottom"/>

    <FrameLayout
        android:id="@android:id/tabcontent"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"/>

</LinearLayout>

</android.support.v4.app.FragmentTabHost></pre>

注意控件的id必須是Android提供的標準id, 即”@android:id”.

</blockquote>

Fragment布局, 包含一行文字提示.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="

<TextView
    android:id="@+id/tab_tv_text"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:textSize="40sp"
    tools:text="Test"/>

</LinearLayout></pre>

Tab布局, 包含一個圖片控件.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="

<ImageView
    android:id="@+id/tab_iv_image"
    android:padding="12dp"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:contentDescription="@null"
    tools:src="@drawable/tab_assistant"/>

</LinearLayout></pre>

2. 主頁

setup設置頁面組合, 卻掉分割線etDividerDrawable(null), 設置Tab.

使用自定義的圖片資源, newTabSpec設置Fragment的Tag標簽.

/**

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!