Modificação das cores dos botões via Java no Android

6 respostas
java
P

Bom dia
Estou com uma pequena duvida, queria saber um método que funciona em todas as API do Android para (Pelo menos da 16 ate a 22) para mudar a cor do botão.

Estou fazendo da seguinte maneira:

btn_ajuda.getBackground().setColorFilter(new PorterDuffColorFilter(Color.BLUE, PorterDuff.Mode.MULTIPLY));

o que funciona para Androids 5.0 para cima, já em versões anteriores não é modificado nada.
Uma alternativa seria usar

btn_ajuda.setBackgroundColor(Color.BLUE);

Que funciona em todas as versões, porem esse método perde o “Design” do botão.

Queria saber se tem um jeito alternativo.

Obs.: Tem q ser via Java mesmo, uma vez que quero deixar o usuário a opção de personalizar as cores.

6 Respostas

L

Olá Paulo,

Faça dessa forma:

btn_ajuda.setBackgroundColor(getResources().getColor(R.color.nome_da_cor));

Lembrando que você deve ter essa cor setada no seu colors.xml, por exemplo:

<color name="nome_da_cor">#0309fb</color>

Abraços.

P

Não tem como, como falei quero dar a oportunidade ao usuário de escolher o esquema de cores, seria complicado criar o colors.xml para isso.

L

Fala Paulo,

Mas o usuário vai poder escolher entre uma lista de cores existentes, certo? Ou qualquer cor que ele quiser?

Não faz muito sentido o usuário colocar qualquer cor.

Abraços.

P

A minha ideia original é de fato qualquer cor, as que melhor agrade o usuário =) kkk
A unica restrição q vou colocar é q a cor do textos tem q ser diferente da cor de fundo.

L

Fala Paulo,

O que não consegui entender, é quais cores, como vai funcionar?

De onde vão vir as cores que o usuário pode escolher? O usuário vai abrir uma paleta de cores?

Dependendo de como for o método de escolha de cores, você consegue identificar qual cor for escolhida.

Abraços.

P

A escolha das cores é usando uma Activity para esse finalidade
Nela tem 3 SeekBar (R,G,B) e uma view para visualizar as cores


Estou pensando em mudar em vez de um Activity usar uma caixa de dialogo só q eu tenho q dar uma estuda.
Usando esse método o usuário pode escolher qualquer cor.
Mas a questão não é bem a cor q ele vai escolher. Queria saber um método de mudar as cores dos botões que funciona em qualquer versão.

Cores padrões do Android

Cores que eu personalizei
Cor do botão = rgb(32,32,32)
Cor do plano de fundo = rgb(0,0,0)
Cor da letra = rgb(100,34,130)

Usei o metodo

PorterDuffColorFilter filtro = new PorterDuffColorFilter(SistemaDeCores.corPrimariaActivity, PorterDuff.Mode.MULTIPLY);); btn.getBackground().setColorFilter(filtro); btn.setTextColor(SistemaDeCores.corTextoActivity);
Funciona bonito para Android 5.0

já no Android 4.4 as cores dos botões não mudaram só da letras
Simulando no Android 4.4

Então uma alternativa que pensei foi fazer o seguinte

if( Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP){ PorterDuffColorFilter filtro = new PorterDuffColorFilter(SistemaDeCores.corPrimariaActivity, PorterDuff.Mode.MULTIPLY); btn.getBackground().setColorFilter(filtro); else{ btn.setBackgroundColor(SistemaDeCores.corPrimariaActivity); } btn.setTextColor(SistemaDeCores.corTextoActivity);

Só q o resultado foi isso:

O q perde todo o design do botão.

Criado 25 de maio de 2016
Ultima resposta 26 de mai. de 2016
Respostas 6
Participantes 2