2015-08-14 14 views

risposta

17

Prova questa CustomTabLayout

public class CustomTabLayout extends TabLayout { 
    public CustomTabLayout(Context context) { 
     super(context); 
    } 

    public CustomTabLayout(Context context, AttributeSet attrs) { 
     super(context, attrs); 
    } 

    public CustomTabLayout(Context context, AttributeSet attrs, int defStyleAttr) { 
     super(context, attrs, defStyleAttr); 
    } 

    @Override 
    public void setTabsFromPagerAdapter(@NonNull PagerAdapter adapter) { 
      Typeface typeface = Typeface.createFromAsset(getContext().getAssets(), "fonts/Roboto-Medium.ttf"); 

     this.removeAllTabs(); 

     ViewGroup slidingTabStrip = (ViewGroup) getChildAt(0); 

     for (int i = 0, count = adapter.getCount(); i < count; i++) { 
      Tab tab = this.newTab(); 
      this.addTab(tab.setText(adapter.getPageTitle(i))); 
      AppCompatTextView view = (AppCompatTextView) ((ViewGroup)slidingTabStrip.getChildAt(i)).getChildAt(1); 
      view.setTypeface(typeface, Typeface.NORMAL); 
     } 
    } 
} 
+2

dal 23.2 .0 aggiornamento, questo non funziona più :( – ClarkXP

25

Come di 23.2.0, setTabsFromPagerAdapter è stato sconsigliato, ma utilizzando una versione modificata di risposta Andreyua s' è possibile utilizzare setupWithViewPager invece.

@Override 
public void setupWithViewPager(ViewPager viewPager) 
{ 
    super.setupWithViewPager(viewPager); 

    if (mTypeface != null) 
    { 
     this.removeAllTabs(); 

     ViewGroup slidingTabStrip = (ViewGroup) getChildAt(0); 

     PagerAdapter adapter = viewPager.getAdapter(); 

     for (int i = 0, count = adapter.getCount(); i < count; i++) 
     { 
      Tab tab = this.newTab(); 
      this.addTab(tab.setText(adapter.getPageTitle(i))); 
      AppCompatTextView view = (AppCompatTextView) ((ViewGroup) slidingTabStrip.getChildAt(i)).getChildAt(1); 
      view.setTypeface(mTypeface, Typeface.NORMAL); 
     } 
    } 
} 

Tutto il merito va a Andreyua per il loro frammento di codice originale con una piccola modifica.

Purtroppo, non ho abbastanza reputazione per fare commenti o avrei risposto direttamente :)

+1

molto, molto bello. Grazie :) – hqt

1

Con libreria di supporto Android 26.2.0 si specifica il tipo di carattere in stile

<style name="TabLayout" parent="Widget.Design.TabLayout"> 
    <item name="tabTextAppearance">@style/TabText</item> 
    <item name="tabSelectedTextColor">@color/white</item> 
    <item name="tabIndicatorColor">@color/white</item> 

</style> 

<style name="TabText" parent="TextAppearance.Design.Tab"> 
    <item name="android:textSize">14sp</item> 
    <item name="android:textColor">@color/lite</item> 
    <!--Here below--> 
    <item name="android:fontFamily">@font/gotham_medium</item> 
</style>