2011-01-31 17 views

risposta

13

Uno stile in Android può avere uno stile genitore.

Quindi è sufficiente che MyActivityTextView definisca GeneralTextView come genitore e modifichi/aggiunga proprietà di stile.

Quindi è possibile utilizzare MyActivityTextView per alcune visualizzazioni e GeneralTextView per gli altri.

È descritto in Defining Styles.

+0

Oh capisco. È grandioso, grazie molte. Ancora una domanda: lo stile figlio può sovrascrivere anche le proprietà dei genitori? – Bruiser

+1

Sì, può sostituire le proprietà principali. –

4

È possibile estendere un unico stile con un altro nel vostro style.xml:

<style name="current_weekday_white" parent="current_day_white"> 
    <item name="android:textColor">#FFABAB</item> 
</style> 
+0

hey ci ho provato con la visualizzazione del testo, ma solo il primo stile funziona, non quello esteso. qualche indizio? –

19

Solo un piccolo pezzo di informazioni che potrebbero aggiungere al valore complessivo della domanda - spudoratamente copiato da: http://developer.android.com/guide/topics/ui/themes.html#DefiningStyles

Se vuoi ereditare dagli stili che hai definito tu stesso, non devi usare l'attributo genitore. Invece, basta anteporre il nome dello stile che si desidera ereditare al nome del nuovo stile, separato da un punto. Ad esempio, per creare un nuovo stile che eredita lo stile CodeFont sopra definito, ma fare il colore rosso, è possibile all'autore il nuovo stile come questo:

<style name="CodeFont.Red"> 
     <item name="android:textColor">#FF0000</item> 
    </style> 

Si noti che non v'è alcun attributo padre nel tag, ma poiché l'attributo nome inizia con il nome di stile CodeFont (che è uno stile creato), questo stile eredita tutte le proprietà di stile da quello stile. Questo stile sovrascrive la proprietà android: textColor per rendere il testo rosso. Puoi fare riferimento a questo nuovo stile come @ style/CodeFont.Red.

È possibile continuare ad ereditare in questo modo tutte le volte che si desidera, concatenando nomi con punti. Ad esempio, è possibile estendere CodeFont.Red per essere più grande, con:

<style name="CodeFont.Red.Big"> 
    <item name="android:textSize">30sp</item> 
</style> 
+4

Trovo interessante il fatto che, anche se in precedenza ho visitato e studiato/scremato quella pagina, non conoscevo questa curiosità interessante e molto utile. Grazie a @Bruiser. – DavidDraughn

Problemi correlati