Cómo obtener un color de cadena de color hexadecimal

Me gustaría usar un color de una cadena hexa, como "#FFFF0000" para (digamos) cambiar el color de fondo de un Diseño. Color.HSVToColor parece un ganador, pero necesita un float[] como parámetro.

¿Estoy cerca de la solución?

Pruebe el método de clase de Color :

 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’, ‘darkgray ‘

Tratar:

 myLayout.setBackgroundColor(Color.parseColor("#636161")); 

Convierte esa cadena a un color int que se puede usar en setBackgroundColor y setTextColor

 String string = "#FFFF0000"; int color = Integer.parseInt(string.replaceFirst("^#",""), 16); 

El 16 significa que es hexadecimal y no su regular 0-9. El resultado debe ser el mismo que

 int color = 0xFFFF0000; 

Esta pregunta surge para una serie de búsquedas relacionadas con el color hexadecimal, por lo que agregaré un resumen aquí.

Color desde int

Los colores hexadecimales toman la forma RRGGBB o AARRGGBB (alfa, rojo, verde, azul). En mi experiencia, al usar un int directamente, necesitas usar el formulario completo AARRGGBB . Si solo tiene el formulario RRGGBB , simplemente RRGGBB con FF para que el alfa (transparencia) sea completamente opaco. Aquí es cómo lo configuraría en código. Usar 0x al comienzo significa que es hexadecimal y no la base 10.

 int myColor = 0xFF3F51B5; myView.setBackgroundColor(myColor); 

Color de cadena

Como otros han notado, puedes usar Color.parseString como tal

 int myColor = Color.parseColor("#3F51B5"); myView.setBackgroundColor(myColor); 

Tenga en cuenta que la cadena debe comenzar con un # . Ambos formatos RRGGBB y AARRGGBB son compatibles.

Color desde XML

Deberías obtener tus colores de XML siempre que sea posible. Esta es la opción recomendada porque hace que sea mucho más fácil hacer cambios de color en su aplicación. Si configura un montón de colores hexadecimales en todo su código, entonces es un gran dolor tratar de cambiarlos más tarde.

El diseño de material de Android tiene paladares de colores con los valores hexadecimales ya configurados.

  • Material de diseño de color
  • Material Diseño paleta de colores generador

Estos colores de tema se utilizan en toda la aplicación y se ven así:

colors.xml

   #3F51B5 #303F9F #C5CAE9 #FF4081 #212121 #757575 #FFFFFF #BDBDBD  

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 obtener un cierto color. Esto hace que sea más fácil ajustar los colores más tarde. De nuevo, esto está en colors.xml .

 #fff3632b @color/orange 

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); 

Android colores predefinidos

La clase Color viene con varias constantes de color predefinidas. Puedes usarlo así

 int myColor = Color.BLUE; myView.setBackgroundColor(myColor); 

Otros colores son

  • Color.BLACK
  • Color.BLUE
  • Color.CYAN
  • Color.DKGRAY
  • Color.GRAY
  • Color.GREEN
  • Color.LTGRAY
  • Color.MAGENTA
  • Color.RED
  • Color.TRANSPARENT
  • Color.WHITE
  • Color.YELLOW

Notas

  • Una forma rápida de encontrar colores hexadecimales es abrir el cuadro de diálogo del selector de color en Gimp (o algún otro software de edición de fotos).
  • Niveles de opacidad estándar en Material Design

Sus

 int color = Color.parseColor("colorstring"); 

Prueba esto:

 vi.setBackgroundColor(Color.parseColor("#FFFF0000")); 

Utilizo esto y me funciona muy bien para configurar cualquier 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 que desee ese color utilizado simplemente ponga MY_COLOR en lugar de Color.BLUE o Color.RED o cualquiera de los otros colores estáticos que ofrece la clase Color.

Simplemente haz una búsqueda en Google de una tabla de colores y puedes encontrar una tabla con los códigos RGB correctos usando 0-255.

Archivo XML guardado en res / values ​​/ colors.xml:

   #f00 #80ff0000  

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:

  

Intente usar 0xFFF000 en su lugar y páselo al método Color.HSVToColor.

Si define un color en su XML y desea usarlo para cambiar el color de fondo o algo así, esta API es la que está buscando:

  ((TextView) view).setBackgroundResource(R.drawable.your_color_here); 

En mi muestra lo usé para TestView

En Xamarin usa esto

 Control.SetBackgroundColor(global::Android.Graphics.Color.ParseColor("#F5F1F1"));