2012-11-09 4 views
17

Ich verwende PagerTabStrip in ViewPager, um den Titel jeder Seite anzuzeigen. Hier ist mein XML-Code: android:textStyle="bold":Wie setze ich TextStyle von PagerTabStrip auf Fett?

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

ich den Textstil zu fett in PagerTabStrip wie diese einstellen will. Dies ist jedoch in PagerTabStrip nicht möglich. Scheint, als ob es nur textcolor Eigenschaft für Text hat. Wie kann ich den Stil fett machen?

+0

Was haben Sie in '@ style/TitleStripTextAppearance'? – CommonsWare

+0

@CommonsWare Oh, ich habe vergessen, diese Zeile zum Zeitpunkt der Veröffentlichung der Frage zu entfernen. Ich habe versucht, Stil in '@ style/TitleStripTextAppearance' hinzuzufügen, aber ich bin mir nicht sicher, ob das funktioniert oder nicht? – Jaguar

Antwort

40

Was müssen Sie tun, ist, einen Stil für den Text erstellen, und dann mit dem Android: textAppearance Attribute ...

Vielleicht so etwas wie diese:

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

Und dann in Ihrem PagerTabStrip XML Dazu:

<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

Übrigens, Eclipse nicht autosuggest android: textAppearance in android.support.v4.view.PagerTabStrip. Aber lassen Sie sich davon nicht irritieren, textAppearance funktioniert für PagerTabStrip. –

+1

Ich brauche benutzerdefinierte Schriftart für meine Pagertabstrip. Irgendeine Idee, wie man das benutzt? – ambit

+0

@Justin - 'textMultiLine' -Eigenschaft funktioniert nicht auf diese Weise. Anders herum? – Braj

4

PagerTabStrip nicht aceppts textAppearance.

Wie @Justin sagte oben, aber auf XML setzen:

style="@style/PagerTabStripText"

nicht:

android:textAppearance="@style/PagerTabStripText"

2

Wenn Sie das Zentrum Reiter mögen von den anderen anders gestalten, , dann müssen Sie Reflexion verwenden:

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); 
} 

Leider funktioniert diese Lösung möglicherweise nicht mehr, wenn Updates für die Android Support Library freigegeben werden (da stammt die Klasse PagerTitleStrip). Dieses Codebeispiel arbeitet insbesondere mit revision 20.

+0

Ich persönlich würde nicht empfehlen, Reflexion für diese Art von "Tricks". Es gibt einen Grund, warum es privat ist - es kann sich jederzeit ändern - sogar während verschiedener Commits derselben Revision. Reflection sollte für Meta-Level-Zeug wie das Schreiben von Frameworks verwendet werden, und so weiter. – kamathln

Verwandte Themen