Как изменить шрифт PagerTabStrip

Я использую ViewPager с PagerTabStrip, и мне нужно установить пользовательские шрифты (typeface), но нет .setTypeFace функция для PagerTabStrip!

Вот мой XML-код:

 <android.support.v4.view.ViewPager xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/viewPager"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

    <android.support.v4.view.PagerTabStrip
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/pagerTabStrip"
        android:layout_gravity="top"
        android:background="#FF0000"
        android:textColor="#FFFFFF" />

</android.support.v4.view.ViewPager>

По этой ссылке я нашел решение, которое может решить мою проблему.

Получите дочерние представления PagerTabStrip и проверьте, является ли это экземпляром TextView. Если это так, установите гарнитуру:

for (int i = 0; i < pagerTabStrip.getChildCount(); ++i) {
View nextChild = pagerTabStrip.getChildAt(i);
if (nextChild instanceof TextView) {
   TextView textViewToConvert = (TextView) nextChild;
   textViewToConvert.setTypeface(PUT_TYPEFACE_HERE)
}
}

Но я не понимаю, что это значит.

Мой макет:

Образ

Я хочу изменить вкладку заголовка на другой стиль шрифта, как показано ниже:

Образ

3 ответа

Решение

Вам нужно создать стиль для текста, а затем использовать атрибут android:textAppearance...

Что-то вроде этого:

 <style name="PagerTabStripText">
     <item name="android:textStyle">italic</item>
 </style>

Ваш PagerTabStrip XML будет выглядеть так:

<android.support.v4.view.PagerTabStrip
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/pagerTabStrip"
    android:layout_gravity="top"
    android:background="#FF0000"
    android:textColor="#FFFFFF"
    android:textAppearance="@style/PagerTabStripText" />

Вы можете поместить font.ttf в assets/fonts/ folder и получить экземпляр шрифта

   Typeface fontTypeFace= Typeface.createFromAsset(getContext().getAssets(),
                "fonts/font.ttf");

for (int i = 0; i < pagerTabStrip.getChildCount(); ++i) {
    View nextChild = pagerTabStrip.getChildAt(i);
    if (nextChild instanceof TextView) {
       TextView textViewToConvert = (TextView) nextChild;
       textViewToConvert.setTypeface(fontTypeFace)
    }
}

Поместите файл.ttf в папку активов и используйте этот код в методе onCreate.

fontTypeFace= Typeface.createFromAsset(getAssets(),
            "fontawesome-webfont.ttf");

 tabs = (PagerSlidingTabStrip) findViewById(R.id.tabs);
    tabs.setTypeface(fontTypeFace,0);
Другие вопросы по тегам