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 ResourceType
justo 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.parseColor
Las 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#0affff
resultarían#affff
. Use esto en su lugar:o con alfa:
fuente
Cause
getResources().getColor
need 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.getColor
no 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
ContextCompat
oSuppressLint
, simplemente agregue unstring
recurso 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
string
after changecolor
es casi imposible ya que están uno al lado del otro.fuente