CQM
Recibo valores de color hexadecimales de un servidor (de esta forma, #xxxxxx
ejemplo #000000
para negro)
¿Cómo convierto esto en un valor entero?
traté de hacer Integer.valueOf("0x" + passedColor.substring(1, passedColor.length()))
para obtener un aún más hextastic 0x000000
resultado, pero esto no se interpreta como un int
aquí, alguna otra sugerencia?
Recibo un error: 08-03 21:06:24.673: ERROR/AndroidRuntime(20231): java.lang.NumberFormatException: unable to parse '0x00C8FBFE' as integer
Estoy usando el SDK de Android para su setBackgroundColor(int color)
función, que toma, como habrás adivinado, un valor de color entero.
Este es el OPUESTO de esta pregunta: ¿Cómo convertir un entero de color en una cadena hexadecimal en Android?
CQM
La verdadera respuesta es usar:
Color.parseColor(myPassedColor)
en android, myPassedColor
siendo el hex
valor como #000
o #000000
o #00000000
.
Sin embargo, esta función no admite valores hexadecimales abreviados como #000
.
-
Desafortunadamente, en no analiza el valor como
#000
. Ver documentación– Alex Semeniuk
9 de enero de 2015 a las 10:13
-
@CQM cómo analizar el color hexadecimal abreviado, como
#ccc
. ¿Hay alguna otra manera?– Kavita Patil
22 de diciembre de 2019 a las 9:38
La respuesta es realmente simple, chicos, en Android, si desea convertir el color hexadecimal en int, solo use Android Color clase, el ejemplo se muestra a continuación
esto es para color gris claro
Color.parseColor("#a8a8a8");
Eso es todo y obtendrás tu resultado.
-
Y simplemente aclare cómo usar: someText.setTextColor(Color.parseColor(“#f9e6ff”) )
– Brian M.
16 de septiembre de 2020 a las 2:59
mike samuel
Integer.parseInt(myString.replaceFirst("#", ""), 16)
-
gracias por la sugerencia, probé esto ahora sin éxito, y resulta que una función de Android incluida fue el único tipo de resultado de color que funciona, aunque ambos devuelven int. Color.parseColor(myPassedColor)) No pensé que se tratara de un problema específico de Android, pero resulta que lo era
– CQM
4 de agosto de 2011 a las 1:15
-
No sé por qué la gente votó esto; no funciona!! Los colores aquí se almacenan en 32 bits, por lo que imprimirlos hace que se muestren durante mucho tiempo. parseInt busca un ‘-‘ explícito para denotar un negativo, y no respeta el bit de signo para enteros o largos. Por lo tanto, dará el número equivocado.
–Christian Chapman
26 de enero de 2013 a las 1:25
-
@enthdegree, para citar el OP, “Recibo valores de color hexadecimales de un servidor (de esta forma, #xxxxxx”, por lo que los colores con los que trata el OP son de 24 bits, no de 32 bits; no hay canal alfa.
–Mike Samuel
26 de enero de 2013 a las 2:48
-
@AllDayAmazing, ‘#’ no es un dígito hexadecimal, un signo o un separador decimal, por lo que
parseInt
fallará si lo encuentra en la entrada.–Mike Samuel
15 de septiembre de 2014 a las 3:28
-
Mi error, estoy tan arraigado en lo que estoy haciendo que lo leí rápidamente y vi
parseColor()
. Eres muy correcto.– AllDayAmazing
15 de septiembre de 2014 a las 4:35
Fei
tengo el mismo problema que encontre algun color en forma de #AAAAAA
y quiero convertir eso en una forma que Android pueda usar. Descubrí que solo puedes usar 0xFFAAAAAA
para que Android pueda decir automáticamente el color. Fíjate en el primero FF
es revelador alpha
valor. Espero eso ayude
La verdadera respuesta es la más simple y fácil….
String white = "#ffffff";
int whiteInt = Color.parseColor(white);
CorriendoRuedas
Estaba enfrentando el mismo problema. De esta forma pude solucionarlo. Como dijo CQM, usar Color.parseColor() es una buena solución para este problema.
Aquí está el código que usé:
this.Button_C.setTextColor(Color.parseColor(prefs.getString("color_prefs", String.valueOf(R.color.green))));
En este caso, mi objetivo era cambiar el color del texto del Botón (Button_C) cuando cambio la selección de color de mis Preferencias (color_prefs).
mikel
Basado en la respuesta de CQM y en la respuesta de ovokerie-ogbeta a otra pregunta, se me ocurrió esta solución:
if (colorAsString.length() == 4) { // #XXX
colorAsString = colorAsString.replaceAll("#([0-9a-fA-F])([0-9a-fA-F])([0-9a-fA-F])", "#$1$1$2$2$3$3");
}
int color = Color.parseColor(colorAsString);
Como por alguna razón no puedo publicar… Ya casi llega, pero necesita los dos argumentos
valueOf
método, donde especifica la entrada de cadena (sin el #, por supuesto) y la base, que especifica la base.Integer.valueOf(passedColor.substring(1, passedColor.length()), 16)
¡Esto se puede hacer con cualquier base entera! descargar.oracle.com/javase/6/docs/api/java/lang/…En t)– ty1824
4 de agosto de 2011 a las 1:10
Posible duplicado de Cómo obtener un color de una cadena de color hexadecimal
– usuario2340612
7 de marzo de 2016 a las 12:54