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>
PagerTabStrip
でtextStyleを太字に設定したいのですが:Android:textStyle="bold"
。しかし、これはPagerTabStrip
では不可能です。テキスト用のtextcolor
プロパティしかないようです。スタイルを太字に設定する方法は何ですか?
あなたがする必要があるのは、テキストのスタイルを作成してから、Android:textAppearance属性を使用することです...
おそらくこのようなもの:
<style name="PagerTabStripText">
<item name="Android:textSize">14sp</item>
<item name="Android:textStyle">bold</item>
<item name="Android:textColor">#a4c639</item>
</style>
次に、PagerTabStripXMLで次のようにします。
<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"/>
PagerTabStripはtextAppearanceをアクセプしません。
@Justinが上で言ったように、しかしxmlに置く:
style="@style/PagerTabStripText"
ない:
Android:textAppearance="@style/PagerTabStripText"
中央のタブタイトルのスタイルを他とは異なるものにする場合は、リフレクションを使用する必要があります。
try {
final Class pagerTitleStripClass = PagerTitleStrip.class;
final Field mCurrTextField = pagerTitleStripClass.getDeclaredField("mCurrText");
mCurrTextField.setAccessible(true);
// mTitle is my class's 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サポートライブラリ の更新がリリースされたときに機能しなくなる可能性があります( PagerTitleStrip クラスの元となっているため)。特に、このコードサンプルは リビジョン2 で動作します。