Estou tentando alterar a cor em uma imagem de marcador branco por código. Eu li que o código abaixo deve mudar a cor, mas meu marcador permanece branco.
Drawable.setColorFilter( 0xffff0000, Mode.MULTIPLY )
Perdi alguma coisa? Existe alguma outra maneira de alterar as cores nos meus drawables localizados na minha pasta res?
Respostas:
Tente o seguinte:
O uso
DrawableCompat
é importante porque fornece compatibilidade com versões anteriores e correções de bugs nos dispositivos da API 22 e anteriores.fonte
OverlayItems
classe hello mapview que pode estar causando o problema? É um drawable regulares da minha pasta res, nada de especial ...Você pode tentar isso para svg vector drawable
fonte
null
paraDrawable#setTintList(ColorStateList)
Pode ser necessário chamar mutate () na gaveta ou todos os ícones são afetados.
fonte
Outra maneira de fazer isso no Lollipop, o Android 5. +, é definir uma tonalidade em um bitmap desenhável como este:
Isso funcionará para você se você tiver um número limitado de cores que deseja usar em suas gavetas. Confira meu post para mais informações .
fonte
minSdkVersion 16
e Android 4.1.1 dispositivo.)android:background="..."
. Muito estranho!Você pode tentar isso por
ImageView
. usandosetColorFilter()
.fonte
Eu escrevi uma função genérica na qual você pode passar o contexto, o ícone é id drawable / mipmap image icon e a nova cor que você precisa para esse ícone.
Esta função retorna um drawable.
fonte
Você pode tentar um ColorMatrixColorFilter, já que sua cor principal é branca:
fonte
Isso funcionou para mim. Coloque "ff" entre 0x e código de cores. Curtiu isto 0xff2196F3
fonte
O mesmo que a resposta aceita, mas um método de conveniência mais simples:
Observe que o código aqui é Kotlin.
fonte
Você pode tentar
Mode.LIGHTEN
ouMode.DARKEN
. Os Javadocs do Android são horríveis ao explicar o que os modos PorterDuff fazem. Você pode dar uma olhada neles aqui: PorterDuff | AndroidSugiro dar uma olhada em Compositing no site da Mozilla aqui. (Eles não têm todos os modos que o Android possui, mas eles têm muitos)
fonte
Use isto: Para java
para Kotlin
você pode usar o PorterDuff.Mode.SRC_ATOP, se o seu plano de fundo tiver cantos arredondados, etc.
fonte
Sintaxe
Exemplo
fonte
Isto é o que eu fiz:
fonte
Basta usar
no seu arquivo XML. Substitua primary_color pela cor personalizada
fonte
Crie um método como este:
e use-o assim:
fonte
A maneira mais fácil de fazer isso:
ou
a, r, g, b: valores de argb de cores.
fonte
Para quem usa o Kotlin, uma simples função de extensão:
e então simplesmente
fonte