Si definiera un color en recursos
<resources>
<color name="someColor">#123456</color>
</resources>
es posible establecer el color por su identificación, como
view.setTextColor(R.color.someColor);
¿También es posible obtener el valor de la cadena de color de colors.xml?
Algo como
colorStr = getColor(R.color.someColor);
// -> colorStr = "#123456"
Si es así, ¿alguien puede dar un ejemplo?
Gracias

//noinspection ResourceTypejusto encima de su declaración.getResources().getString(0+R.color.someColor);trabajaSolo por el simple hecho de copiarpasta:
O si lo quieres sin la transparencia:
fuente
'#' + Integer.toHexString(getResources().getColor(R.color.someColor);ya que más tarde lo estaba usando enColor.parseColorLas respuestas proporcionadas anteriormente no están actualizadas.
Por favor, pruebe este
fuente
Todas las soluciones aquí usan
Integer.toHexString()break si tuviera ceros a la izquierda en su cadena hexadecimal. Los colores como#0affffresultarían#affff. Use esto en su lugar:o con alfa:
fuente
Cause
getResources().getColorneed api> 23. Entonces esto es mejor: solo por el simple hecho de copiar y pegar:Integer.toHexString( ContextCompat.getColor( getContext(), R.color.someColor ) );O si lo quieres sin la transparencia: `
Integer.toHexString( ContextCompat.getColor( getContext(), R.color.someColor ) & 0x00ffffff );fuente
ContextCompat.getColorno toma 3 argumentosPara API por encima de 21 puede usar
Esto devolverá el color en formato de cadena. Para convertir eso a un color en formato entero (a veces solo se aceptan números enteros), entonces:
La expresión anterior devuelve el equivalente entero del color definido en el archivo color.xml
fuente
Agregue @SuppressLint ("ResourceType") si ocurre un error. Como un bramido.
fuente
No creo que exista una funcionalidad estándar para eso. Sin embargo, puede convertir el valor devuelto de
getColor()a hexadecimal y convertir el valor hexadecimal a una cadena.hex 123456 = int 1193046;
fuente
Así es como lo he hecho:
fuente
¡Esto funciona para mi!
fuente
Si no desea utilizar
ContextCompatoSuppressLint, simplemente agregue unstringrecurso justo debajo de sucolor.En vez de
Utilizar
Su código se vuelve más repetitivo pero es mucho más limpio. Además, olvidarse de actualizar el
stringafter changecolores casi imposible ya que están uno al lado del otro.fuente