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 chaîne de couleur à partir de colors.xml?
Quelque chose comme
colorStr = getColor(R.color.someColor);
// -> colorStr = "#123456"
Si oui, quelqu'un peut-il donner un exemple?
Je vous remercie
C'est ta réponse
colorStr=getResources().getString(R.color.someColor);
tu auras
colorStr = "#123456"
Juste pour des raisons de copypasta facile:
"#" + 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);
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);
Toutes les solutions ici utilisent Integer.toHexString()
break si vous aviez des zéros en tête dans votre chaîne hexagonale. Des couleurs comme #0affff
donneraient #affff
. Utilisez ceci à la place:
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)
Pour les API supérieures à 21, vous pouvez utiliser
getString(R.color.color_name);
Cela renverra la couleur au format chaîne . Pour la convertir en couleur au format entier (parfois seuls les entiers sont acceptés), alors:
Color.parseColor(getString(R.color.color_name));
L'expression ci-dessus renvoie l'équivalent entier de la couleur définie dans le fichier color.xml.
Je ne pense pas qu'il existe une fonctionnalité standard pour cela. Vous pouvez toutefois transformer la valeur renvoyée de getColor()
en hex et transformer la valeur hexadécimale en chaîne.
hex 123456 = int 1193046;
Voici comment je l'ai fait:
String color = "#" + Integer.toHexString(ContextCompat.getColor
(getApplicationContext(), R.color.yourColor) & 0x00ffffff);
Ajoutez @SuppressLint ("ResourceType") si une erreur se produit. Comme ci-dessous.
private String formatUsernameAction(UserInfo userInfo, String action) {
String username = userInfo.getUsername();
@SuppressLint("ResourceType") String usernameColor = getContext().getResources().getString(R.color.background_button);
return "<font color=\""+usernameColor+"\">" + username
+ "</font> <font color=\"#787f83\">" + action.toLowerCase() + "</font>";
}