Android obtiene el color como valor de cadena
Si definí un color en los recursos
<resources> <color name="someColor">#123456</color> </resources>
Es posible establecer el color por su id, como
- Cómo definir ColorStateList para TextView?
- Cómo convertir el código Color.RED en valores enteros de color en Android Java?
- Cómo obtener el valor RGB de código de color hexadecimal en java
- TextView y color de fondo
- Estados dibujables con colores (no dibujables)
view.setTextColor(R.color.someColor);
¿También es posible obtener el valor de la cadena de colores de colors.xml?
Algo como
colorStr = getColor(R.color.someColor); // -> colorStr = "#123456"
Si es así, ¿puede alguien dar un ejemplo?
Gracias
- Cambiar el color de la ventana de inicio de la aplicación
- Fondo de menú Android negro con Theme.AppCompat?
- Android: sólo cambia el texto de la TextView alfa
- ¿Cómo aplicar gradiente a la barra de estado en android?
- Vista de texto con textos de colores diferentes en código xml
- Html.fromHtml no funciona para span
- Android: Animar el cambio de color de color a color
- ¿Cuál es el uso de 0xff -colors en android?
Esta es tu respuesta
colorStr=getResources().getString(R.color.someColor);
Conseguirás
colorStr = "#123456"
Sólo por el bien de copypasta fácil:
Integer.toHexString(getResources().getColor(R.color.someColor, null);
O si lo desea sin la transparencia:
Integer.toHexString(getResources().getColor(R.color.someColor, null) & 0x00ffffff)
Las respuestas proporcionadas anteriormente no se actualizan.
Por favor, pruebe este
String colorHex = "#" + Integer.toHexString(ContextCompat.getColor(getActivity(), R.color.dark_sky_blue));
Causa getResources().getColor
necesidad api> 23. Así que esto es mejor: Sólo por el bien de la copia fácil y pegar:
Integer.toHexString( ContextCompat.getColor( getContext(), R.color.someColor ) );
O si lo desea sin la transparencia: `
Integer.toHexString( ContextCompat.getColor( getContext(), R.color.someColor ) & 0x00ffffff );
Para API superior a 21 puede utilizar
getString(R.color.color_name);
Esto devolverá el color en un formato de cadena. Para convertir eso a un color en el formato del entero (a veces solamente los enteros se aceptan) entonces:
Color.parseColor(getString(R.color.color_name));
La expresión anterior devuelve el equivalente entero del color definido en el archivo color.xml
No creo que haya funcionalidad estándar para eso. Sin embargo, puede cambiar el valor de getColor()
de getColor()
a hexadecimal y convertir el valor hexadecimal en cadena.
Hex 123456 = int 1193046;
Así es como lo he hecho:
String color = "#" + Integer.toHexString(ContextCompat.getColor (getApplicationContext(), R.color.yourColor) & 0x00ffffff);