Как установить 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
для текста. Каким образом я могу установить стиль полужирным?
Ответы
Ответ 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.