2015-08-14 3 views

ответ

17

Попробуйте 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

так 23,2 .0 обновление, это не работает больше :( – ClarkXP

25

По состоянию на 23.2.0, setTabsFromPagerAdapter устарела, однако, используя модифицированную версию ответа Andreyua «s вы можете использовать setupWithViewPager вместо этого.

@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); 
     } 
    } 
} 

Все Заслуга Andreyua для их первоначального фрагмента кода с незначительной модификацией.

К сожалению, у меня нет достаточной репутации, чтобы сделать комментарии или я бы ответил прямо :)

+1

очень-очень приятно. Спасибо :) – hqt

1

С андроида поддержки библиотеки 26.2.0 можно указать шрифт в стиле

<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> 
Смежные вопросы