2011-01-31 6 views

Répondre

13

Un style sous Android peut avoir un style parent.

Il suffit donc que MyActivityTextView définisse GeneralTextView comme style parent et modifie/ajoute des propriétés de style.

Ensuite, vous pouvez utiliser MyActivityTextView pour certaines vues et GeneralTextView pour les autres. Il est décrit au Defining Styles.

+0

Oh je vois. C'est super, merci beaucoup. Une autre question cependant: le style de l'enfant peut-il aussi écraser les propriétés des parents? – Bruiser

+1

Oui, il peut remplacer les propriétés parentes. –

4

Vous pouvez étendre un style avec une autre dans votre style.xml:

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

hey là j'ai essayé ceci avec la vue de texte mais seulement le premier modèle fonctionne, pas le prolongé. des indices? –

19

Juste un petit morceau d'information qui pourrait ajouter à la valeur globale de la question - sans vergogne copié à partir de: http://developer.android.com/guide/topics/ui/themes.html#DefiningStyles

Si vous souhaitez hériter des styles que vous avez définis vous-même, vous n'avez pas besoin d'utiliser l'attribut parent. Au lieu de cela, préfixez juste le nom du style que vous voulez hériter du nom de votre nouveau style, séparé par un point. Par exemple, pour créer un nouveau style qui hérite du style CodeFont défini ci-dessus, mais faire de la couleur rouge, vous pouvez l'auteur du nouveau style comme celui-ci:

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

avis qu'il n'y a pas d'attribut parent dans la balise, mais Parce que l'attribut name commence par le nom de style CodeFont (qui est un style que vous avez créé), ce style hérite toutes les propriétés de style de ce style. Ce style remplace ensuite la propriété android: textColor pour rendre le texte rouge. Vous pouvez référencer ce nouveau style en tant que @ style/CodeFont.Red.

Vous pouvez continuer à hériter comme cela autant de fois que vous le souhaitez, en enchaînant les noms avec des points. Par exemple, vous pouvez étendre CodeFont.Red pour être plus grand, avec:

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

Je trouve intéressant que, même si j'ai déjà visité et étudié/parcouru cette page, je ne connaissais pas ce truc intéressant et très utile. Merci @Bruiser. – DavidDraughn

Questions connexes