web-dev-qa-db-ja.com

PagerTabStripのTextStyleを太字に設定するにはどうすればよいですか?

PagerTabStripViewPagerを使用して、各ページのタイトルを表示しています。これが私の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プロパティしかないようです。スタイルを太字に設定する方法は何ですか?

17
Jainendra

あなたがする必要があるのは、テキストのスタイルを作成してから、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"/>
43
Justin

PagerTabStripはtextAppearanceをアクセプしません。

@Justinが上で言ったように、しかしxmlに置く:

style="@style/PagerTabStripText"

ない:

Android:textAppearance="@style/PagerTabStripText"

4
Igor Maia Romcy

中央のタブタイトルのスタイルを他とは異なるものにする場合は、リフレクションを使用する必要があります。

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 で動作します。

2
Charles Madere