2012-11-09 12 views
17

Sto usando PagerTabStrip in ViewPager per mostrare il titolo di ogni pagina. Ecco il mio codice XML:Come impostare TextStyle di PagerTabStrip in grassetto?

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

voglio impostare il TEXTSTYLE in grassetto in PagerTabStrip come questo: android:textStyle="bold". Ma questo non è possibile in PagerTabStrip. Sembra che abbia solo la proprietà textcolor per il testo. Qual è il modo in cui posso impostare lo stile in grassetto?

+0

Cosa si ha in '@ style/TitleStripTextAppearance'? – CommonsWare

+0

@CommonsWare Oh ho dimenticato di rimuovere questa riga al momento della pubblicazione della domanda. Stavo cercando di aggiungere uno stile in '@ style/TitleStripTextAppearance', ma non sono sicuro che funzionerà o no? – Jaguar

risposta

40

Quello che dovete fare è creare uno stile per il testo, e quindi utilizzare l'androide: attributo textAppearance ...

Forse qualcosa di simile:

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

E poi nel vostro XML PagerTabStrip A fare questo:

<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

A proposito, eclipse non esegue l'analisi automatica di android: textAppearance all'interno di android.support.v4.view.PagerTabStrip. Ma non essere confuso da ciò, textAppearance funziona per PagerTabStrip. –

+1

Ho bisogno di usare caratteri personalizzati per il mio pagertabstrip. Qualche idea su come usarlo? – ambit

+0

@Justin - la proprietà 'textMultiLine' non funziona in questo modo. Qualche altro modo? – Braj

4

PagerTabStrip non applica testoAppearance.

Come @Justin detto sopra, ma su XML messo:

style="@style/PagerTabStripText"

non

:

android:textAppearance="@style/PagerTabStripText"

2

Se vuoi per lo stile del titolo della scheda centrale in modo diverso dagli altri , quindi è necessario utilizzare la riflessione:

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

Sfortunatamente, questa soluzione potrebbe non funzionare più quando vengono rilasciati gli aggiornamenti per lo Android Support Library (poiché è da lì che si trova la classe PagerTitleStrip). In particolare, questo esempio di codice funziona con revision 20.

+0

Personalmente non consiglierei di utilizzare la riflessione per questo tipo di "trucchi". C'è un motivo per cui è privato - Può cambiare in qualsiasi momento - anche durante diversi commit della stessa revisione. Reflection deve essere utilizzato per elementi di livello meta come la scrittura di framework e così via. – kamathln

Problemi correlati