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