2012-11-09 10 views
17

PagerTabStripViewPagerに使用していますが、各ページのタイトルを表示しています。 android:textStyle="bold":私はこのようなPagerTabStripで大胆にTEXTSTYLEを設定したいPagerTabStripのTextStyleを太字に設定するには?

<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> 

:ここに私のXMLコードです。しかし、これはPagerTabStripでは不可能です。テキストにはtextcolorという属性しかないようです。スタイルを太字に設定する方法は何ですか?

+0

'@ style/TitleStripTextAppearance'には何がありますか? – CommonsWare

+0

@CommonsWareああ質問を投稿するときにこの行を削除するのを忘れました。私は '@ style/TitleStripTextAppearance'でスタイルを追加しようとしていましたが、私はこの作業をするかどうか分かりません。 – Jaguar

答えて

40

何をする必要がテキストのスタイルを作成し、アンドロイドの使用である:textAppearance属性を...

おそらく、このような何か:あなたのPagerTabStripのXMLで

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

そして、これを行う:

<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"/> 
+11

ところで、eclipse does and not autosuggest android:textAppearance inside android.support.v4.view.PagerTabStrip。しかし、混乱しないでください、textAppearanceはPagerTabStripのために働きます。 –

+1

私のpagertabstripにカスタム書体を使用する必要があります。どのようにそれを使用する考えですか? – ambit

+0

@Justin - 'textMultiLine'プロパティがこのように動作していません。まったく別の方法ですか? – Braj

4

PagerTabStripはtextAppearanceを出力しません。

同様@Justinは上記の言ったが、XMLに置く:

style="@style/PagerTabStripText"

ない:

android:textAppearance="@style/PagerTabStripText"

2

あなたが他の人とは異なる中央のタブのタイトルのスタイルをしたい場合反射を使用する必要があります:

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 Support Libraryのアップデートがリリースされたときには(これはPagerTitleStripクラスが由来しているため)、もはや動作しなくなる可能性があります。特に、このコードサンプルはrevision 20で動作しています。

+0

私は個人的には、これらの種類の "トリック"に反射を使用することはお勧めしません。それはプライベートな理由があります - 同じリビジョンの異なるコミット中であっても、いつでも変更される可能性があります。 リフレクションは、フレームワークの作成などのメタレベル用に使用する必要があります。 – kamathln

関連する問題