133 votes

Android obtient la couleur comme valeur de chaîne

Si j'ai défini une couleur dans les ressources

 <resources>
    <color name="someColor">#123456</color>
</resources>

il est possible de définir la couleur par son identifiant, comme

 view.setTextColor(R.color.someColor);

Est-il également possible d'obtenir la valeur de la chaîne de couleur à partir de colours.xml ?

Quelque chose comme

 colorStr = getColor(R.color.someColor);
// -> colorStr = "#123456"

Si oui, quelqu'un peut-il donner un exemple ?

Merci

176voto

Tanmay Mandal Points 13341

Ceci est votre réponse

 colorStr=getResources().getString(R.color.someColor);

tu auras

  colorStr = "#123456"

163voto

kodi Points 1955

Juste pour le plaisir des copypasta faciles :

 "#" + Integer.toHexString(ContextCompat.getColor(getActivity(), R.color.some_color));

Ou si vous le voulez sans la transparence :

 "#" + Integer.toHexString(ContextCompat.getColor(getActivity(), R.color.some_color) & 0x00ffffff);

51voto

Florian M Points 2055

Toutes les solutions ici utilisant Integer.toHexString() break si vous aviez des zéros non significatifs dans votre chaîne hexadécimale. Des couleurs telles que #0affff donneraient #affff . Utilisez plutôt ceci :

 String.format("#%06x", ContextCompat.getColor(this, R.color.your_color) & 0xffffff)

ou avec alpha :

 String.format("#%08x", ContextCompat.getColor(this, R.color.your_color) & 0xffffffff)

27voto

Solidak Points 2062

Les réponses fournies ci-dessus ne sont pas mises à jour.

S'il vous plaît, essayez celui-la

 String colorHex = "#" + Integer.toHexString(ContextCompat.getColor(getActivity(), R.color.dark_sky_blue) & 0x00ffffff);

10voto

Honghe.Wu Points 471

Parce que getResources().getColor besoin d'une API > 23. C'est donc mieux : Juste pour faciliter le copier-coller :

Integer.toHexString( ContextCompat.getColor( getContext(), R.color.someColor ) );

Ou si vous le voulez sans la transparence :`

Integer.toHexString( ContextCompat.getColor( getContext(), R.color.someColor ) & 0x00ffffff );

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