Me gustaría usar un color de una cadena hexa tal como "#FFFF0000"para (por ejemplo) cambiar el color de fondo de un diseño.
Color.HSVToColorparece un ganador pero toma un float[]como parámetro.
¿Estoy cerca de la solución?
Me gustaría usar un color de una cadena hexa tal como "#FFFF0000"para (por ejemplo) cambiar el color de fondo de un diseño.
Color.HSVToColorparece un ganador pero toma un float[]como parámetro.
¿Estoy cerca de la solución?
Respuestas:
Prueba el Colormétodo de clase:
public static int parseColor (String colorString)
De la documentación de Android :
Los formatos admitidos son: #RRGGBB #AARRGGBB 'rojo', 'azul', 'verde', 'negro', 'blanco', 'gris', 'cian', 'magenta', 'amarillo', 'gris claro', 'gris oscuro '
#000valores?
if(colorString.length() == 4) { colorString = "#" + StringUtils.repeat(colorString.substring(1, 1), 1) + StringUtils.repeat(colorString.substring(2, 2), 1) + StringUtils.repeat(colorString.substring(3, 3), 1) }
if(colorString.length() == 4 && colorString[0] == '#')
Tratar:
myLayout.setBackgroundColor(Color.parseColor("#636161"));
Esta pregunta surge para una serie de búsquedas relacionadas con el color hexadecimal, por lo que agregaré un resumen aquí.
Los colores hexadecimales toman la forma RRGGBBo AARRGGBB(alfa, rojo, verde, azul). En mi experiencia, cuando se usa intdirectamente, debe usar el AARRGGBBformulario completo . Si solo tiene el RRGGBBformulario, solo tiene que ponerle el prefijo FFpara que el alfa (transparencia) sea completamente opaco. Así es como lo configuraría en el código. Usar 0xal principio significa que es hexadecimal y no base 10.
int myColor = 0xFF3F51B5;
myView.setBackgroundColor(myColor);
Como otros han notado, puedes usar Color.parseStringasí
int myColor = Color.parseColor("#3F51B5");
myView.setBackgroundColor(myColor);
Tenga en cuenta que la cadena debe comenzar con a #. Ambos RRGGBBy AARRGGBBformatos son compatibles.
En realidad, debería obtener sus colores de XML siempre que sea posible. Esta es la opción recomendada porque hace que sea mucho más fácil realizar cambios de color en su aplicación. Si establece muchos colores hexadecimales a lo largo de su código, entonces es un gran dolor tratar de cambiarlos más tarde.
El diseño de material de Android tiene paladares de color con los valores hexadecimales ya configurados.
Estos colores de tema se usan en toda la aplicación y se ven así:
colors.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="primary">#3F51B5</color>
<color name="primary_dark">#303F9F</color>
<color name="primary_light">#C5CAE9</color>
<color name="accent">#FF4081</color>
<color name="primary_text">#212121</color>
<color name="secondary_text">#757575</color>
<color name="icons">#FFFFFF</color>
<color name="divider">#BDBDBD</color>
</resources>
Si necesita colores adicionales, una buena práctica a seguir es definir su color en dos pasos en xml. Primero nombra el color del valor hexadecimal y luego nombra un componente de tu aplicación que debería tener un color determinado. Esto facilita el ajuste de los colores más adelante. De nuevo, esto está en colors.xml .
<color name="orange">#fff3632b</color>
<color name="my_view_background_color">@color/orange</color>
Luego, cuando desee establecer el color en el código, haga lo siguiente:
int myColor = ContextCompat.getColor(context, R.color.my_view_background_color);
myView.setBackgroundColor(myColor);
La clase Color viene con una serie de constantes de color predefinidas. Puedes usarlo así.
int myColor = Color.BLUE;
myView.setBackgroundColor(myColor);
Otros colores son
Color.BLACKColor.BLUEColor.CYANColor.DKGRAYColor.GRAYColor.GREENColor.LTGRAYColor.MAGENTAColor.REDColor.TRANSPARENTColor.WHITEColor.YELLOWConvierta esa cadena a un intcolor que pueda usarse en setBackgroundColorysetTextColor
String string = "#FFFF0000";
int color = Integer.parseInt(string.replaceFirst("^#",""), 16);
El 16 significa que es hexadecimal y no su 0-9 normal. El resultado debe ser el mismo que
int color = 0xFFFF0000;
#80000000en cuyo caso la versión int sería int color = 0x80000000;. Si eso no funciona, publique una nueva pregunta con más detalles para que más personas que yo lo noten. Tenga en cuenta que #80000000es un color negro translúcido.
Sus
int color = Color.parseColor("colorstring");
Lo uso y funciona muy bien para mí para configurar el color que desee.
public static final int MY_COLOR = Color.rgb(255, 102, 153);
Establezca los colores usando 0-255 para cada rojo, verde y azul, luego, en cualquier lugar donde desee usar ese color, simplemente coloque MY_COLOR en lugar de Color.BLUE o Color.RED o cualquiera de los otros colores estáticos que ofrece la clase Color.
Simplemente haga una búsqueda en Google de la tabla de colores y puede encontrar una tabla con los códigos RGB correctos usando 0-255.
En Xamarin usa esto
Control.SetBackgroundColor(global::Android.Graphics.Color.ParseColor("#F5F1F1"));
Archivo XML guardado en res / values / colors.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="opaque_red">#f00</color>
<color name="translucent_red">#80ff0000</color>
</resources>
Este código de aplicación recupera el recurso de color:
Resources res = getResources();
int color = res.getColor(R.color.opaque_red);
Este diseño XML aplica el color a un atributo:
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textColor="@color/translucent_red"
android:text="Hello"/>
Intente usar 0xFFF000 en su lugar y páselo al método Color.HSVToColor.