新增 TabLayout

TabLayout 提供了一個水平佈局來顯示選項卡,通常與 ViewPager 一起使用。

確保在依賴項下的應用程式的 build.gradle 檔案中新增了以下依賴項:

compile 'com.android.support:design:25.3.1'

現在,你可以使用 TabItem 類將項新增到佈局中的 TabLayout。

例如:

<android.support.design.widget.TabLayout
    android:layout_height="wrap_content"
    android:layout_width="match_parent"
    android:id="@+id/tabLayout">

    <android.support.design.widget.TabItem
        android:text="@string/tab_text_1"
        android:icon="@drawable/ic_tab_1"/>

    <android.support.design.widget.TabItem
        android:text="@string/tab_text_2"
        android:icon="@drawable/ic_tab_2"/>

</android.support.design.widget.TabLayout>

新增 OnTabSelectedListener 以在選擇/取消選擇/重新選擇 TabLayout 中的選項卡時收到通知:

TabLayout tabLayout = (TabLayout) findViewById(R.id.tabLayout);
tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
    @Override
    public void onTabSelected(TabLayout.Tab tab) {
        int position = tab.getPosition();
        // Switch to view for this tab
    }

    @Override
    public void onTabUnselected(TabLayout.Tab tab) {

    }

    @Override
    public void onTabReselected(TabLayout.Tab tab) {

    }
});

也可以以程式設計方式從 TabLayout 新增/刪除標籤。

TabLayout.Tab tab = tabLayout.newTab();
tab.setText(R.string.tab_text_1);
tab.setIcon(R.drawable.ic_tab_1);
tabLayout.addTab(tab);

tabLayout.removeTab(tab);
tabLayout.removeTabAt(0);
tabLayout.removeAllTabs();

TabLayout 有兩種模式,固定和可滾動。

tabLayout.setTabMode(TabLayout.MODE_FIXED);
tabLayout.setTabMode(TabLayout.MODE_SCROLLABLE);

這些也可以在 XML 中應用:

<android.support.design.widget.TabLayout
    android:id="@+id/tabLayout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:tabMode="fixed|scrollable" />

注意:TabLayout 模式是互斥的,這意味著一次只能啟用一個模式。

選項卡指示器顏色是為 Material Design 主題定義的強調顏色。
你可以通過在 styles.xml 中定義自定義樣式然後將樣式應用於 TabLayout 來覆蓋此顏色:

<style name="MyCustomTabLayoutStyle" parent="Widget.Design.TabLayout">
    <item name="tabIndicatorColor">@color/your_color</item>
</style>

然後,你可以使用以下方法將樣式應用於檢視:

<android.support.design.widget.TabLayout
        android:id="@+id/tabs"
        style="@style/MyCustomTabLayoutStyle"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
</android.support.design.widget.TabLayout>