新增 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>