Comme Andrei a répondu, vous pouvez changer la police en étendant la classe TabLayout . Et comme Penzzz l'a dit, vous ne pouvez pas le faire avec la méthode addTab . Remplacez la méthode onLayout comme ci-dessous:
@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);
}
}
}
}
Doit remplacer la méthode onLayout, car, lorsque vous utilisez la méthode setupWithViewPager pour lier le TabLayout avec le ViewPager, vous devez définir le texte des tabulations soit avec la méthode setText, soit dans le PagerAdapter après cela et lorsque cela se produit, la méthode onLayout est appelée sur le ViewGroup parent ( TabLayout) et c'est l'endroit où mettre le paramètre fontface. (La modification d'un texte TextView provoque l'appel de la méthode onLayout de son parent - Un tabView a deux enfants, l'un est ImageView et l'autre TextView)
Une autre solution:
Tout d'abord, ces lignes de code:
if(fontFace == null){
fontFace = Typeface.createFromAsset(context.getAssets(), context.getString(R.string.IranSans));
}
Dans la solution ci-dessus, doit être écrit en dehors de deux boucles.
Mais une meilleure solution pour l' API> = 16 utilise android: fontFamily :
Créez un répertoire de ressources Android nommé police et copiez la police souhaitée dans le répertoire.
Ensuite, utilisez ces styles:
<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>