Estoy tratando de cambiar el color de una imagen de marcador blanco por código. He leído que el siguiente código debería cambiar el color, pero mi marcador sigue siendo blanco.
Drawable.setColorFilter( 0xffff0000, Mode.MULTIPLY )
¿Me he perdido algo? ¿Hay alguna otra forma de cambiar los colores en mis elementos dibujables ubicados en mi carpeta res?
Respuestas:
Prueba esto:
El uso
DrawableCompat
es importante porque proporciona compatibilidad con versiones anteriores y correcciones de errores en dispositivos API 22 y anteriores.fuente
OverlayItems
clase hello mapview que podría estar causando el problema? Es un sorteo regular de mi carpeta res, nada especial ...Puedes probar esto para svg vector drawable
fuente
null
aDrawable#setTintList(ColorStateList)
Es posible que deba llamar a mutate () en el dibujo o, de lo contrario, todos los iconos se verán afectados.
fuente
Otra forma de hacer esto en Lollipop, Android 5. + es configurar un tinte en un mapa de bits dibujable como este:
Esto funcionará para usted si tiene una cantidad limitada de colores que desea usar en sus elementos dibujables. Mira mi blog para más información .
fuente
minSdkVersion 16
dispositivo Android 4.1.1.)android:background="..."
. ¡Bastante extraño!Puedes probar esto para
ImageView
. utilizandosetColorFilter()
.fuente
He escrito una función genérica en la que puede pasar el contexto, el ícono es id dibujable / ícono de imagen mipmap y el nuevo color que necesita para ese ícono.
Esta función devuelve un dibujable.
fuente
Puede probar un ColorMatrixColorFilter, ya que su color clave es blanco:
fuente
Esto funcionó para mí. Asegúrese de poner "ff" entre 0x y el código de color. Me gusta esto 0xff2196F3
fuente
Igual que la respuesta aceptada pero un método de conveniencia más simple:
Tenga en cuenta que el código aquí es Kotlin.
fuente
Es posible que desee probar
Mode.LIGHTEN
oMode.DARKEN
. Los Javadocs de Android son horribles para explicar lo que hacen los modos PorterDuff. Puedes echarles un vistazo aquí: PorterDuff | AndroideSugiero mirar alrededor de Compositing en el sitio de Mozilla aquí. (No tienen todos los modos que tiene Android, pero tienen muchos de ellos)
fuente
Use esto: para java
para Kotlin
puede usar PorterDuff.Mode.SRC_ATOP, si su fondo tiene esquinas redondeadas, etc.
fuente
Sintaxis
Ejemplo
fuente
Esto es lo que hice:
fuente
Simplemente use
en su archivo XML. Reemplace primary_color por color personalizado
fuente
Cree un método como este:
y úsalo como:
fuente
La forma más fácil de hacerlo:
o
a, r, g, b: valores de color argb.
fuente
Para aquellos que usan Kotlin, una función de extensión simple:
y luego simplemente hacer
fuente