2011-01-31 14 views

Respuesta

13

Un estilo en Android puede tener un estilo parental.

Así que solo tiene MyActivityTextView define como estilo principal y cambia/agrega propiedades de estilo.

Luego puede usar MyActivityTextView para algunas vistas y GeneralTextView para las demás.

Se describe en Defining Styles.

+0

Oh, ya veo. Eso es genial, muchas gracias. Sin embargo, una pregunta más: ¿el estilo secundario también puede sobrescribir las propiedades principales? – Bruiser

+1

Sí, puede anular las propiedades principales. –

4

Se puede extender un estilo con otro en su style.xml:

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

hey, he intentado esto con la vista de texto pero solo funciona el primer estilo, no el extendido. ¿alguna pista? –

19

Sólo una pequeña pieza de información que podría aumentar el valor global de la cuestión - descaradamente copiado de: http://developer.android.com/guide/topics/ui/themes.html#DefiningStyles

Si desea heredar de los estilos que ha definido usted mismo, no tiene que usar el atributo principal. En su lugar, simplemente prefija el nombre del estilo que desea heredar al nombre de su nuevo estilo, separado por un punto. Por ejemplo, para crear un nuevo estilo que hereda el estilo CodeFont definido anteriormente, pero que el color rojo, puede autor del nuevo estilo de la siguiente manera:

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

en cuenta que no hay ningún atributo de los padres en la etiqueta, pero porque el atributo de nombre comienza con el nombre de estilo de CodeFont (que es un estilo que ha creado), este estilo hereda todas las propiedades de estilo de ese estilo. Este estilo reemplaza la propiedad android: textColor para que el texto se vuelva rojo. Puede hacer referencia a este nuevo estilo como @ style/CodeFont.Red.

Puede continuar heredando esta cantidad tantas veces como desee, encadenando nombres con puntos. Por ejemplo, puede ampliar CodeFont.Red para que sea más grande, con:

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

Me parece interesante que, aunque he visitado y estudiado/revisado esa página, no conocía este interesante y muy útil tidbit. Gracias @Bruiser. – DavidDraughn

Cuestiones relacionadas