添加 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>