Come ha risposto Andrei , puoi cambiare il tipo di carattere estendendo la classe TabLayout . E come ha detto Penzzz , non puoi farlo con il metodo addTab . Esegui l' override del metodo onLayout come segue :
@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);
}
}
}
}
Deve sovrascrivere il metodo onLayout, perché, quando si utilizza il metodo setupWithViewPager per associare TabLayout con ViewPager, è necessario impostare il testo delle tabulazioni con il metodo setText o nel PagerAdapter dopo di che e quando ciò è accaduto, il metodo onLayout viene chiamato sul ViewGroup genitore ( TabLayout) e questo è il posto dove inserire l'impostazione del fontface. (La modifica di un testo TextView causa la chiamata al metodo onLayout del suo genitore: un tabView ha due figli, uno è ImageView e un altro è TextView)
Un'altra soluzione:
Innanzitutto, queste righe di codice:
if(fontFace == null){
fontFace = Typeface.createFromAsset(context.getAssets(), context.getString(R.string.IranSans));
}
Nella soluzione sopra, dovrebbe essere scritto al di fuori di due cicli.
Ma la soluzione migliore per API> = 16 sta usando android: fontFamily :
Crea una directory di risorse Android denominata font e copia il font desiderato nella directory.
Quindi usa questi stili:
<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>