2012-11-16 9 views
18

Scrivo un'app per Android e desidero modificare il tema della mia app.Modifica dell'aspetto del testo in stili e temi per un'app per Android

Sono riuscito a modificare il colore di sfondo dell'app utilizzando un tema, ma non riesco a modificare l'aspetto del testo predefinito.

Questo è il file di risorse styles.xml.

<resources> 
    <style name="QTheme" parent="android:Theme.Light"> 
     <item name="android:windowBackground">@color/q_green</item> 
     <item name="android:colorBackground">@color/q_green</item> 
     <item name="android:textAppearance">@style/QText</item> 
    </style> 

    <color name="q_green">#008000</color> 
    <color name="white">#FFFFFF</color> 

    <style name="QText" parent="@android:style/TextAppearance.Medium"> 
     <item name="android:textSize">20sp</item> 
     <item name="android:textColor">@color/white</item> 
     <item name="android:textStyle">bold</item> 
     <item name="android:textFont">Verdana</item> 
    </style> 
</resources> 

e solo per controllare, questo è un esempio di uno dei miei TextViews voglio utilizzare lo stile di cui sopra nel mio file di layout.

<TextView 
    android:id="@+id/txtDevice" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center" 
    android:text="@string/device" 
/> 

Qualcuno può vedere dove sto andando male?

+6

Hai appena sostituito lo stile 'TextAppearance.Medium' nel tema (che non modificherà' TextView'). Se si desidera modificare l'aspetto 'TextView', quindi sovrascrivere l'attributo di stile' textViewStyle' nel tema. Oppure puoi applicare il tuo stile personalizzato usando 'android: textAppearance' – Luksprog

+0

Grazie. Ho cambiato il nome dell'elemento in android.textViewStyle e questo sembrava fare il trucco. Tuttavia, ha cambiato il testo nei miei filatori, non solo nelle mie visualizzazioni di testo. C'è un modo per differenziare? –

+0

Non ne sono sicuro. Se non sbaglio, l'elemento 'TextView' di' Spinner' ha uno stile diverso (che eredita ancora dallo stile 'TextView'), indicato dall'attributo' spinnerItemStyle' nel tema. Si consiglia di impostarlo su '@android: style/Widget.TextView.SpinnerItem' e vedere come va. – Luksprog

risposta

36

Solo per completezza e pieno credito a Lusprog, questo è ora il mio file risorse

<resources> 
    <style name="QTheme" parent="android:Theme.Light"> 
     <item name="android:windowBackground">@color/q_green</item> 
     <item name="android:colorBackground">@color/q_green</item> 
     <item name="android:textViewStyle">@style/QText</item> 
    </style> 

    <color name="q_green">#008000</color> 
    <color name="white">#FFFFFF</color> 

    <style name="QText" parent="@android:style/TextAppearance.Medium"> 
     <item name="android:textSize">20sp</item> 
     <item name="android:textColor">@color/white</item> 
     <item name="android:textStyle">bold</item> 
     <item name="android:typeface">sans</item> 
    </style> 
</resources> 

Anche grazie a Padma Kumar per l'aiuto dei caratteri.

+0

Cosa è cambiato? diverso da Android: carattere tipografico! –

+0

@ style/QText

+0

fieno puoi dirmi android: textViewStyle è questo attributo c'è in Android? –

1

// rimuovere questa riga dal tuo stili non esiste un attributo come questo

<item name="android:textFont">Verdana</item> 

// si può dare carattere per cambiare lo stile del carattere

<item name="android:typeface">monospace</item> 

// per settting gli stili

<TextView 
    android:id="@+id/txtDevice" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center" 
    style="@style/QText" 
    android:text="@string/device" 
/> 
+2

c'è un modo per aggiungere lo stile al tema in modo da non dover impostare lo stile per ogni testo –

+0

No, non è possibile impostare lo stile del carattere con xml. bisogno di impostare il carattere tramite il codice. –

+0

L'aggiunta di quello stile a TextView non funziona –