J'essaie de convertir une valeur hexadécimale en int afin de pouvoir créer une nouvelle couleur pouvant être dessinée. Je ne sais pas si c'est possible, mais d'après la documentation, cela devrait l'être. Il demande clairement
public ColorDrawable (int color)
Ajoutée dans l'API niveau 1 Crée un nouveau ColorDrawable avec le .__ spécifié. Couleur.
Paramètres color La couleur à dessiner.
Donc, mon code ne fonctionne pas car j'obtiens une erreur Invalid int: "FF6666". Des idées?
int decode = Integer.decode("FF6666");
ColorDrawable colorDrawable = new ColorDrawable(decode);
Puisque vous parlez d'hex, vous devez commencer par 0x
et n'oubliez pas l'opacité.
Donc en gros: 0xFFFF6666
ColorDrawable cd = new ColorDrawable(0xFFFF6666);
Vous pouvez également créer un nouveau fichier colors.xml dans/res et définir les couleurs comme suit:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="mycolor">#FF6666</color>
</resources>
et obtenez simplement la couleur définie dans R.color.mycolor
getResources().getColor(R.color.mycolor)
Pour utiliser ContextCompat et réutiliser la couleur, vous pouvez faire quelque chose comme ceci:
ColorDrawable colorDrawable = new ColorDrawable(ContextCompat.getColor(this, R.color.white));
Ça devrait être comme ça ...
ColorDrawable cd = new ColorDrawable(0xffff6666);
Remarque j'ai utilisé 8 chiffres hexadécimaux, pas 6 chiffres hexadécimaux. qui ajoute à la transparence
En suivant les conseils ci-dessus, résumez cette question:
ColorDrawable colorDrawable = new ColorDrawable ( Color.parseColor ("# ce9b2c")); `
ColorDrawable colorDrawable = new ColorDrawable ( 0xFFCE9B2C ); Notez qu’il ya 8 chiffres hexadécimaux, et non 6 chiffres hexadécimaux, qui ne fonctionnent pas. Case all
ColorDrawable colorDrawable = new ColorDrawable (ContextCompat.getColor (mContext, R.color.default_color));
Sélection à vous!
Je pense que vous devez utiliser:
public static int parseColor (String colorString)
Ajouté au niveau 1 de l'API Analyser la chaîne de couleur et renvoyer le color-int correspondant Si la chaîne ne peut pas être analysée, lance un Exception IllegalArgumentException. Les formats pris en charge sont: #RRGGBB #AARRGGBB rouge, bleu, vert, noir, blanc, gris, cyan, magenta, jaune, gris, gris foncé, gris, gris clair, gris foncé, aqua, fuschia, citron vert,. bordeaux, marine, olive, pourpre, argent, sarcelle
Voici comment j'ai converti une couleur Hex en int et appliqué à un fond d'une vue
Disons que nous avons une couleur # 8080000.
int myColor = Color.parseColor("#808000");
view.setBackgroundColor(context.getColor(myColor));