जैसा कि आंद्रेई ने उत्तर दिया, आप टैबलैटआउट क्लास का विस्तार करके फॉन्टफेस को बदल सकते हैं । और जैसा कि पेनजेज़ ने कहा, आप इसे एडटैब विधि में नहीं कर सकते । ओवरले विधि को बाइल के रूप में ओवरराइड करें :
@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);
}
}
}
}
OverLayout पद्धति को अधिलेखित करें, क्योंकि, जब आप ViewPager के साथ TabLayout को बाइंड करने के लिए setupWithViewPager विधि का उपयोग करते हैं, तो आपको सेट टेक्स्ट विधि के साथ या पेजर एडेप्टर में टैब पाठ सेट करना होगा और जब यह हुआ, तब ऑन-लाइन विधि को मूल व्यूग्रुप पर बुलाया जाता है ( TabLayout) और वह स्थान सेट करने के लिए fontface है। (TextView टेक्स्ट बदलने का कारण यह है कि माता-पिता की विधि पर कॉल करें - एक tabView के दो बच्चे हैं, एक है ImageView दूसरा है TextView)
एक और समाधान:
सबसे पहले, कोड की इन पंक्तियों:
if(fontFace == null){
fontFace = Typeface.createFromAsset(context.getAssets(), context.getString(R.string.IranSans));
}
उपरोक्त समाधान में, दो छोरों के बाहर लिखा जाना चाहिए।
लेकिन एपीआई के लिए बेहतर समाधान > = 16 Android का उपयोग कर रहा है : fontFamily :
एक एंड्रॉइड रिसोर्स डायरेक्टरी नाम का फॉन्ट बनाएं और अपने इच्छित फॉन्ट को कॉपी करें।
फिर इन शैलियों का उपयोग करें:
<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>