179 votes

Obtenir la valeur d'une couleur par programme lorsqu'il s'agit d'une référence (thème)

Considérez ceci :

styles.xml

<style name="BlueTheme" parent="@android:style/Theme.Black.NoTitleBar">
    <item name="theme_color">@color/theme_color_blue</item>
</style>

attrs.xml

<attr name="theme_color" format="reference" />

color.xml

<color name="theme_color_blue">#ff0071d3</color>

Ainsi, le couleur du thème est référencé par le thème. Comment puis-je obtenir la référence theme_color de manière programmatique ? Normalement, je devrais utiliser getResources().getColor() mais pas dans ce cas car il est référencé !

0voto

Lucas Batista Points 99

Pour moi, cela ne fonctionnait qu'en utilisant ContextCompat y el typedValue.resourceId

Comme proposé dans cette question : Comment obtenir la valeur d'un attribut de couleur de manière programmatique ?

TypedValue typedValue = new TypedValue();
getTheme().resolveAttribute(R.attr.colorControlNormal, typedValue, true);
int color = ContextCompat.getColor(this, typedValue.resourceId)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X