Saat Andrei menjawab, Anda dapat mengubah fontface dengan memperluas kelas TabLayout . Dan seperti yang dikatakan Penzzz , Anda tidak dapat melakukannya dengan metode addTab . Ganti metode onLayout seperti di bawah ini:
@Override
protected void onLayout(boolean changed, int left, int top, int right, int bottom){
super.onLayout(changed, left, top, right, bottom);
final ViewGroup tabStrip = (ViewGroup)getChildAt(0);
final int tabCount = tabStrip.getChildCount();
ViewGroup tabView;
int tabChildCount;
View tabViewChild;
for(int i=0; i<tabCount; i++){
tabView = (ViewGroup)tabStrip.getChildAt(i);
tabChildCount = tabView.getChildCount();
for(int j=0; j<tabChildCount; j++){
tabViewChild = tabView.getChildAt(j);
if(tabViewChild instanceof AppCompatTextView){
if(fontFace == null){
fontFace = Typeface.createFromAsset(context.getAssets(), context.getString(R.string.IranSans));
}
((TextView) tabViewChild).setTypeface(fontFace, Typeface.BOLD);
}
}
}
}
Harus Menimpa metode onLayout, karena, saat Anda menggunakan metode setupWithViewPager untuk mengikat TabLayout dengan ViewPager, Anda harus menyetel teks tab baik dengan metode setText atau di PagerAdapter setelah itu dan ketika ini terjadi, metode onLayout dipanggil pada ViewGroup induk ( TabLayout) dan itulah tempat untuk meletakkan pengaturan fontface. (Mengubah teks TextView menyebabkan memanggil metode onLayout dari induknya - TabView memiliki dua anak, satu adalah ImageView dan yang lainnya adalah TextView)
Solusi Lain:
Pertama, baris kode berikut:
if(fontFace == null){
fontFace = Typeface.createFromAsset(context.getAssets(), context.getString(R.string.IranSans));
}
Dalam solusi di atas, harus ditulis di luar dua loop.
Tetapi solusi yang lebih baik untuk API> = 16 adalah menggunakan android: fontFamily :
Buat Direktori Sumber Daya Android bernama font dan salin font yang Anda inginkan ke direktori.
Kemudian gunakan gaya ini:
<style name="tabLayoutTitles">
<item name="android:textColor">@color/white</item>
<item name="android:textSize">@dimen/appFirstFontSize</item>
<item name="android:fontFamily">@font/vazir_bold</item>
</style>
<style name="defaultTabLayout">
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">@dimen/defaultTabLayoutHeight</item>
<item name="android:gravity">right</item>
<item name="tabTextAppearance">@style/tabLayoutTitles</item>
<item name="tabSelectedTextColor">@color/white</item>
<item name="tabIndicatorColor">@color/white</item>
<item name="tabIndicatorHeight">@dimen/accomTabIndicatorHeight</item>
<item name="tabMode">fixed</item>
<item name="tabGravity">fill</item>
<item name="tabBackground">@drawable/rectangle_white_ripple</item>
<item name="android:background">@color/colorPrimary</item>
</style>