2010-09-20 6 views
5

Here scrivono:Android: ho un solo scatto per proprietà attraverso l'uso di temi? Non c'è niente come i CSS in Android?

Per applicare una definizione di stile come un tema, è necessario applicare lo stile ad un'attività o applicazione nel manifesto di Android. Quando si esegue questa operazione, ogni vista all'interno dell'attività o dell'applicazione si applicherà a ogni proprietà che supporta. Per esempio , se si applica lo stile CodeFont dagli esempi precedenti a un'attività , tutti gli elementi di visualizzazione supportati dalle proprietà di stile di testo verranno applicati a .

Quindi, quando si imposta TextColor su Rosso, fare TUTTI gli elementi con testo diventa rosso ?? Esistono potenti specificatori come nei fogli di stile CSS? Ho appena visto il concetto di stili (style="@style/CodeFont") praticabile.

risposta

3

In risposta ai vostri commenti potreste trovare quello che state cercando con la proprietà textAppearance.

Aprire il file themes.xml qui:
https://android.googlesource.com/platform/frameworks/base/+/froyo-release/core/res/res/values/themes.xml

Se fate una scoperta per textAppearance si nota varie voci quali:

<style name="Theme"> 
    <item name="textAppearanceButton">@android:style/TextAppearance.Widget.Button</item> 
    ... 
    <item name="panelTextAppearance">?android:attr/textAppearanceInverse</item> 
    ... 

Questo vi permette in qualche misura ai componenti stile in tutto la tua applicazione come mostrato nell'esempio Maragues.

Così mentre non è possibile controllare completamente lo stile di tutti gli elementi figlio senza dire un listview, scroll view ecc, c'è un supporto limitato per il controllo degli stili alcuni componenti basati su testo come TextView e o Button.

+0

Questa è la direzione giusta, ma come si modifica l'aspetto di una proprietà, ad esempio textColor. Ho provato a creare un nuovo stile che eredita da TextAppearance.Widget.Button e sovrascrive textColor, ma non ha avuto alcun effetto – HRJ

+0

(ho impostato la proprietà textAppearanceButton per indicare anche il nuovo stile) – HRJ

2

Se leggete appena sotto il testo citato:

Per impostare un tema per tutte le attività della vostra applicazione, aprire il file AndroidManifest.xml e modificare il tag per includere l'androide: attributo tema con il nome stile

Se si desidera applicare un tema a una sola attività nell'applicazione, aggiungere l'attributo android: theme al tag.

e un po 'dopo, si descrive come ereditare e ignorare le proprietà, proprio come i CSS:

Se vi piace un tema, ma si desidera modificarlo, è sufficiente aggiungere il tema come il genitore di il tuo tema personalizzato. Ad esempio, è possibile modificare la finestra di dialogo tema tradizionale di utilizzare la propria immagine di sfondo come questo:

<style name="CustomTextView" parent="@android:style/Widget.TextView"> 
    <item name="android:background">@drawable/custom_background</item> 
</style> 

Poi, per Interit da CustomTextView

<style name="CustomTextView.RedText"> 
    <item name="android:textColor">@color/red</item> 
</style> 

Una volta che la progettazione del layout di XML, è possibile ereditare una tema e sostituire le proprietà

<TextView 
    android:id="@+id/example" 

    style="@style/CustomTextView.RedText" 

    android:textColor="@color/green" /> 

credo che si dovrebbe leggere nuovamente la pagina lei stesso collegato, è ben spiegato :)

+0

Quindi, in entrambi i casi, devo impostare l'attributo style nell'elemento reale? – OneWorld

+0

Puoi anche impostare lo stile nel manifest. Un o un possono avere un tema, che può essere sostituito in seguito. – Maragues

+0

Quindi, che cosa posso modellare, quando si imposta un tema su un'attività? Posso dire smth come "Tutti i pulsanti hanno il testo rosso e tutte le videate di testo hanno caratteri blu e piccoli"? Sai cosa intendo riferendosi ai CSS? – OneWorld

Problemi correlati