Cómo obtener un color de la cadena hexadecimal del color
Me gustaría usar un color de una cadena hexa como "#FFFF0000"
para (por ejemplo) cambiar el color de fondo de un Layout. Color.HSVToColor
parece un ganador, pero toma un float[]
como un parámetro.
¿Estoy cerca de la solución?
- ¿Cómo puedo configurar el color estrella de la barra de calificación?
- Cómo obtener el color de fondo de un ImageView
- ¿Cómo puedo detectar mejor los diferentes colores LED con la cámara de un teléfono Android y OpenCV?
- Android: Establecer fondo de color aleatorio en crear
- Android: ¿Cuál es la clave para obtener el color de fondo de contacto?
- ¿Es posible cambiar el color del FadingEdge de un ListView?
- Error al inflacionar la clase EditText al crear TextInputLayout en Android 4.4.2:
- Androide. Color CheckBoxPreference
- ¿Cuál es el color predeterminado para el texto en textview?
- Android aplicar color a la animación alfa
- Encontrar el color dominante de una imagen en un @drawable de Android
- Cómo configurar los colores en MPAndroidChart?
- Algoritmo rápido para invertir un valor de color ARGB a ABGR?
Pruebe el método de clase de Color
:
public static int parseColor (String colorString)
De la documentación de Android:
Los formatos soportados son: #RRGGBB #AARRGGBB 'rojo', 'azul', 'verde', 'negro', 'blanco', 'gris', 'cian', 'magenta', 'amarillo', 'lightgray', 'darkgray '
Tratar:
myLayout.setBackgroundColor(Color.parseColor("#636161"));
Convierta esa cadena en 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 regular 0-9. El resultado debe ser el mismo que
int color = 0xFFFF0000;
Sus
int color = Color.parseColor("colorstring");
Utilizo esto y trabaja muy bien para mí para fijar cualquier color que deseo.
public static final int MY_COLOR = Color.rgb(255, 102, 153);
Establecer los colores con 0-255 para cada rojo, verde y azul, entonces en cualquier lugar que desee que el color utilizado sólo tiene que poner MY_COLOR en lugar de Color.BLUE o Color.RED o cualquiera de los otros colores estáticos de la clase de color ofrece.
Simplemente haga una búsqueda de Google para el gráfico de colores y puede encontrar un gráfico con los códigos RGB correctos usando 0-255.
Prueba esto:
vi.setBackgroundColor(Color.parseColor("#FFFF0000"));
Esta pregunta surge para una serie de búsquedas relacionadas con el color hexagonal, por lo que voy a añadir un resumen aquí.
Color desde int
Los colores hexagonales toman la forma RRGGBB
o AARRGGBB
(alfa, rojo, verde, azul). En mi experiencia, cuando se utiliza un int
directamente, es necesario utilizar el formulario completo AARRGGBB
. Si sólo tiene el formulario RRGGBB
, simplemente RRGGBB
con FF
para hacer que el alfa (transparencia) sea completamente opaco. Aquí está cómo usted lo fijaría en código. Usar 0x
al principio significa que es hexadecimal y no base 10.
int myColor = 0xFF3F51B5; myView.setBackgroundColor(myColor);
Color de la cadena
Como otros han señalado, puede utilizar Color.parseString
como así
int myColor = Color.parseColor("#3F51B5"); myView.setBackgroundColor(myColor);
Tenga en cuenta que la cadena debe comenzar con un #
. Se RRGGBB
formatos RRGGBB
y AARRGGBB
.
Color de XML
En realidad debería estar recibiendo los colores de XML siempre que sea posible. Esta es la opción recomendada porque facilita mucho la realización de cambios de color en la aplicación. Si establece un montón de colores hexadecimales en todo el código, entonces es un gran dolor para tratar de cambiarlos más tarde.
El diseño de material Android tiene paladares de color con los valores hexadecimales ya configurados.
- Diseño del material
- Material Diseño generador de paleta de colores
Estos colores del tema se utilizan 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. Nombre el color del valor hexadecimal y luego el nombre de un componente de su aplicación que debe obtener un determinado color. Esto hace que sea fácil de ajustar los colores más tarde. Una vez más, esto está en colors.xml .
<color name="orange">#fff3632b</color> <color name="my_view_background_color">@color/orange</color>
A continuación, cuando desee establecer el color en código, haga lo siguiente:
int myColor = ContextCompat.getColor(context, R.color.my_view_background_color); myView.setBackgroundColor(myColor);
Colores predefinidos de Android
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.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 manera rápida de encontrar los colores hexadecimales es abrir el diálogo selector de color en Gimp (o algún otro software de edición de fotos).
- Niveles de opacidad estándar en el diseño del material
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);
Esta disposición 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 pase eso en el 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
- Android Gallery en Android 4.4 (KitKat) devuelve un URI diferente para Intent.ACTION_GET_CONTENT
- Cómo hacer una rotación de imagen suave en Android?