2011-03-09 21 views
207

Me gustaría utilizar un color de una cadena de hexa como "#FFFF0000" a (por ejemplo) cambie el color de fondo de un diseño. Color.HSVToColor se parece a un ganador, pero se necesita un float[] como parámetro.Cómo conseguir un color de hexadecimal secuencia del color

¿Soy cualquier cierre a la solución a todos? Método

+0

duplicado posible de [la conversión de la secuencia del color android en tiempo de ejecución en int] (http://stackoverflow.com/questions/3849607/converting-android -color-string-in-runtime-into-int) –

Respuesta

454

Trate Color clase:

public static int parseColor (String colorString) 

De la documentación Android:

Los formatos soportados son: #RRGGBB #AARRGGBB 'rojo', 'azul', 'verde', 'negro', 'blanco', 'gris', 'cian', 'magenta', 'amarillo', 'gris claro', 'gris oscuro'

+4

¿Alguien sabe cómo analizar los valores '# 000'? –

+4

Sí, simplemente hazlo: '' '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)} '' ', corrígeme si me equivoco – xdevs23

+3

Para agregar al código @ xdevs23, cambie la condición if a este : 'if (colorString.length() == 4 && colorString [0] == '#')' – Zac

20

Convertir esa cadena a un color int que se puede utilizar en setBackgroundColor y setTextColor

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

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

int color = 0xFFFF0000; 
+0

cómo puedo convertir String color = "80000000"; a int color =? –

+0

Creo que la versión de cadena debe ser '# 80000000', en cuyo caso la versión int sería' int color = 0x80000000; '.Si eso no funciona, publique una [nueva pregunta] (http://stackoverflow.com/questions/ask) con más detalles para que más personas que yo lo noten. Tenga en cuenta que '# 80000000' es un color negro translúcido. –

+0

Sé que int sería int color = 0x80000000 pero mi problema es cómo convertirlo ... Pero ahora voy a resolver mi problema con int color = parseColor ("#" + "80000000"); ... gracias por responder . –

4

Intente utilizar 0xFFF000 lugar y pasar eso en el método Color.HSVToColor.

+2

Supongo que deberías reemplazar esa tercera F con un cero. En el OP, creo que los primeros dos caracteres F se usan para establecer la opacidad. –

9

utilizo este y funciona muy bien para mí para establecer cualquier color que quiero.

public static final int MY_COLOR = Color.rgb(255, 102, 153); 

Establecer los colores usando 0-255 para cada color rojo, verde y azul, a continuación, en cualquier lugar que desea que el color utilizado solo my_color poner en lugar de Color.BLUE o Color.RED o cualquiera de los otros colores estáticos de la clase Color ofertas.

Sólo hacer una búsqueda en Google de carta de colores y se puede encontrar una tabla con los códigos RGB correctos utilizando 0-255.

175

Probar: archivo

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

si está utilizando xamarin ... el código es este Android.Graphics.Color.ParseColor ("# 636161") con "P" en Upper –

5

XML guardado en res/valores/colores.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 XML disposición se 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"/> 
3

Si se define un color en su XML y desea utilizarlo 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 que la utilizaron para TestView

9

Prueba esto:

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

Es

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

Esta pregunta surge de una serie de búsquedas relacionadas con color hexadecimal por lo que se agregue un resumen aquí.

color de int

colores Hex tomar la forma RRGGBB o AARRGGBB (alfa, rojo, verde, azul). En mi experiencia, al usar un int directamente, necesita usar el formulario completo AARRGGBB. Si solo tiene el formulario RRGGBB, simplemente póngalo como prefijo con FF para que el alfa (transparencia) sea completamente opaco. Aquí es cómo lo configuraría en código. Usando 0x en la base significa que es hexadecimal y no de base 10.

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

color de cadena

Como otros han señalado, se puede utilizar como tal Color.parseString

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

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

color a partir de XML

En realidad debería estar recibiendo sus colores a partir 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 del material de Android tiene paladares de colores con los valores hexadecimales ya configurados.

Estos colores del tema se utilizan a lo largo de su aplicación y tener este aspecto:

colores.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 usted 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.

<color name="orange">#fff3632b</color> 
<color name="my_view_background_color">@color/orange</color> 

Luego, cuando se desea ajustar el color en el código, haga lo siguiente:

int myColor = ContextCompat.getColor(context, R.color.my_view_background_color);  
myView.setBackgroundColor(myColor); 

colores predefinidos Android

La clase Color viene con una serie de constantes de color predefinidos. 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

0

En Xamarin Utilice esta

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