Подтвердить что ты не робот

Как установить TextStyle из PagerTabStrip в полужирный?

Я использую PagerTabStrip в ViewPager, чтобы показать название каждой страницы. Вот мой XML-код:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" 
    android:background="@drawable/bg">

    <android.support.v4.view.ViewPager
        android:id="@+id/pager"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
    >
    <android.support.v4.view.PagerTabStrip
            android:id="@+id/pager_title_strip"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="top"
            android:background="#33b5e5"
            android:textColor="#a4c639"
            android:paddingTop="4dp"
            android:paddingBottom="4dp" />
    </android.support.v4.view.ViewPager>

</RelativeLayout>

Я хочу установить textStyle полужирным шрифтом в PagerTabStrip следующим образом: android:textStyle="bold". Но это невозможно в PagerTabStrip. Похоже, у него есть только свойство textcolor для текста. Каким образом я могу установить стиль полужирным?

4b9b3361

Ответ 1

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

Возможно, что-то вроде этого:

 <style name="PagerTabStripText">
      <item name="android:textSize">14sp</item>
      <item name="android:textStyle">bold</item>
      <item name="android:textColor">#a4c639</item>
 </style>

И затем в вашем PagerTabStrip XML сделайте следующее:

 <android.support.v4.view.PagerTabStrip
        android:id="@+id/pager_title_strip"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="top"
        android:background="#33b5e5"
        android:paddingTop="4dp"
        android:paddingBottom="4dp" 
        android:textAppearance="@style/PagerTabStripText"/>

Ответ 2

PagerTabStrip не обрабатывает textAppearance.

Как @Justin сказал выше, но на xml put:

style="@style/PagerTabStripText"

not:

android:textAppearance="@style/PagerTabStripText"

Ответ 3

Если вы хотите стилизовать заголовок вкладки центра иначе, чем другие, тогда вам нужно будет использовать отражение:

try {
    final Class pagerTitleStripClass = PagerTitleStrip.class;
    final Field mCurrTextField = pagerTitleStripClass.getDeclaredField("mCurrText");
    mCurrTextField.setAccessible(true);

    // mTitle is my class PagerTabStrip member variable
    final TextView mCurrText = (TextView) mCurrTextField.get(mTitle);
    mCurrText.setTypeface(Typeface.DEFAULT_BOLD);
} catch (final Exception e) {
    Log.w(TAG, "Exception when styling currently selected title!", e);
}

К сожалению, это решение потенциально не работает больше, когда выпущены обновления для Android Support Library (как там, где PagerTitleStrip class from). В частности, этот пример кода работает с версией 20.