/ / Android - utilisez des attributs pour modifier des styles personnalisés - Android, attributs, styles, thèmes

Android - utilisez les attributs pour modifier les styles personnalisés - Android, les attributs, les styles, les thèmes

Voici mon problème. J'ai défini des thèmes et des styles personnalisés, de manière à personnaliser différentes vues, dans les fichiers .xml correspondants. Voici quelques extraits de code:

themes.xml:

...
<style name="Legacy" parent="android:Theme.NoTitleBar">
<item name="android:buttonStyle">@style/Legacy.Button</item>
...
</style>

styles.xml:

...
<style name="Legacy.Button" parent="@android:style/Widget.Button">
<item name="android:textColor">#ffffff</item>
<item name="android:background">@drawable/button_selector_blue</item>
<item name="android:textSize">15dp</item>
</style>

Disons que je mets le thème de mon application sur Legacy. Si j'utilise un bouton dans une mise en page, mes paramètres par défaut personnalisés seront définis (texte blanc, l'arrière-plan est @ drawable / button_selector_blue, etc.).

Maintenant, disons que je veux conserver ces paramètres pour la taille du texte: j’aimerais avoir des boutons avec une taille de texte plus grande, qui seraient définis dans un attribut titleSize dans attrs.xml:

...
<attr name="titleSize" format="reference|dimension" />

et quelle valeur est définie pour chaque thème dans mon fichier themes.xml.

Donc, ma mise en page contiendrait quelque chose comme:

<Button
android:id="@+idmyButtonId"
android:drawableRight="@drawable/aDrawable"
android:text="@string/someText"
android:textSize="?titleSize"
android:layout_width="fill_parent" android:layout_height="wrap_content">
</Button>

Lors du lancement de mon application, l'erreur suivante apparaît: java.lang.UnsupportedOperationException: Impossible de convertir en dimension: type = 0x2

Il semble donc que je ne puisse pas modifier les styles personnalisés à l'aide d'attributs, du moins pas de cette façon. Une telle chose est possible ? Si non, qu'utiliseriez-vous pour obtenir un tel résultat?

Je souhaite donner à l’utilisateur la possibilité de choisir parmi différents thèmes. Je ne peux donc pas simplement définir un style ButtonWithLargeText supplémentaire et l’utiliser directement dans ma mise en page.

Merci de votre aide !

Réponses:

0 pour la réponse № 1

J'ai finalement réussi à le faire fonctionner. Au lieu de définir la taille de mes titres dans attrs.xml, j’ai utilisé dimens.xml. Voici ce qui fonctionne maintenant:

<Button
android:id="@+idmyButtonId"
android:drawableRight="@drawable/aDrawable"
android:text="@string/someText"
android:textSize="@dimen/titleSize"
android:layout_width="fill_parent" android:layout_height="wrap_content">
</Button>

Pendant que je reçois ma taille de texte normale (que j'ai définie dans mon styles.xml) sur le bouton en utilisant ceci:

<Button
android:id="@+id/idRegularButton"
android:text="@string/regularSizeText"
android:layout_width="wrap_content" android:layout_height="wrap_content">
</Button>