想必關(guān)于使用自定義 TabLayout 來作為ViewPager 的指示器,大家都已經(jīng)很熟悉了吧喊崖,如果還不了解自定義 TabLayout挣磨,可以看看 Showdy 寫的 TabLayout之自定義樣式 。
本文呢荤懂,不再過多的復(fù)述如何自定義 TabLayout 的樣式相關(guān)問題茁裙,而是簡單說說如何自定義 TabLayout 的分隔符 Divider。
如下圖所示节仿,是需要實(shí)現(xiàn)的頁面效果:
頁面效果
可以看到跟一般的 ViewPager 的Tab 指示器不同晤锥,沒有文字下方的指示條,取而代之的是 Tab 之間的分隔符廊宪,并且這個(gè)分隔符是有上下間距要求的矾瘾。
廢話不錯(cuò)說,直接 show me the fxcking code <簟:爵妗!
activity中的tab:
<android.support.design.widget.TabLayout
android:id="@+id/tabs"
android:layout_width="match_parent"
android:layout_height="32dp"
android:background="#ffffff" //設(shè)置背景色
app:tabIndicatorHeight="0dp" //橫線指示條高度設(shè)為0dp
app:tabPaddingEnd="20dp"
app:tabPaddingStart="20dp"
app:tabSelectedTextColor="#FEDA44" //tab被選中的顏色
app:tabTextColor="#000000"> //未被選中的文字顏色
</android.support.design.widget.TabLayout>
分隔符 Divider 的自定義樣式文件 divider_vertical.xml(位于 drawable 文件夾下):
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#EDECEB"/>
<size android:width="1dp"/>
<padding android:bottom="9dp"/>
<padding android:top="9dp"/>
</shape>
在 Java 文件中設(shè)置:
mTabs.setTabMode(TabLayout.MODE_FIXED); //當(dāng)Tab較少傅寡,且占滿整個(gè)屏幕時(shí)可以使用這種模式放妈;
mTabs.setTabGravity(TabLayout.GRAVITY_FILL); //配合TabMode使用,用于讓每個(gè)標(biāo)簽平分TabLayout的全部寬度
LinearLayout linearLayout = (LinearLayout) mTabs.getChildAt(0);
linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE);
linearLayout.setDividerDrawable(ContextCompat.getDrawable(this, R.drawable.divider_vertical)); //設(shè)置分割線的drawable
linearLayout.setDividerPadding(SizeUtils.dip2px(this, 9)); //該方法傳入的參數(shù)為像素的大小荐操,故需要使用dp轉(zhuǎn)px的方法
至此我們就實(shí)現(xiàn)了自定義 TabLayout 的風(fēng)格線的方法了芜抒,大家是不是也發(fā)現(xiàn)了 TabLayout 的強(qiáng)大之處了~本次的文章很短,感覺還是很有用的托启,如果哪位小伙伴遇到了這樣的問題宅倒,通過本文幫你解決了疑惑,請(qǐng)點(diǎn)個(gè)喜歡吧~