Estou tentando definir a cor de plano de fundo de uma exibição (neste caso, um botão).
Eu uso este código:
// set the background to green
v.setBackgroundColor(0x0000FF00 );
v.invalidate();
Isso faz com que o botão desapareça da tela. O que estou fazendo de errado e qual é a maneira correta de alterar a cor do plano de fundo em qualquer Visualização?
Obrigado.
Respostas:
Você tornou seu botão transparente. O primeiro byte é o alfa.
Experimentar
v.setBackgroundColor(0xFF00FF00);
fonte
0xff00ff00
, exatamente o mesmo que o que é sugerido na resposta, exceto que ele também tem a vantagem de ser legível . A maioria dos desenvolvedores prefere uma solução legível por humanos.Quando você chama setBackgoundColor, ele substitui / remove qualquer recurso em segundo plano existente, incluindo bordas, cantos, preenchimento, etc. O que você deseja fazer é alterar a cor do recurso em segundo plano existente ...
Experimente o PorterDuff.Mode. * Para obter efeitos diferentes.
fonte
Várias opções para fazer isso ...
Defina o plano de fundo para verde:
Defina o fundo para verde com Alpha :
Defina o plano de fundo para verde com a constante Color.GREEN:
Defina o plano de fundo para a definição verde em Colors.xml
e usando:
e:
ou o mais longo:
e:
fonte
getResources().getColor(...)
ficou obsoleto stackoverflow.com/questions/31842983/…v.setBackgroundResource(R.color.myGreen);
ao usarcolors.xml
invalidate
chamadas, como você pode ver ossetBackground...
métodos já chamam isso.v.setBackgroundColor(0x00FF00);
é apenas o código deles que eles dizem que não está funcionando. Eu também esperaria que fosse transparente.Você pode definir a cor hexadecimal para qualquer recurso com:
fonte
O código não define o botão para verde. Em vez disso, torna o botão totalmente invisível.
Explicação: o valor hexadecimal da cor está incorreto. Com um valor Alfa igual a zero, a cor ficará invisível.
O valor hexadecimal correto é
0xFF00FF00
para a opacidade total em verde. Qualquer valor alfa entre 00 e FF causaria transparência.fonte
Em algum
View
? O que você tem está correto, embora você deva desligar ainvalidate()
ligação.No entanto, alguns
Views
já têm antecedentes. AButton
, por exemplo, já tem um plano de fundo: a face do botão em si. Esse plano de fundo é umStateListDrawable
, que você pode encontrar naandroid-2.1/data/res/drawable/btn_default.xml
instalação do SDK do Android. Isso, por sua vez, refere-se a um monte de imagens bitmap de nove correções, disponíveis em várias densidades. Você precisaria clonar e modificar tudo isso para atingir seus objetivos ecológicos.Em resumo, será melhor encontrar outro padrão de interface do usuário do que tentar alterar o plano de fundo de um
Button
.fonte
Para definir a primeira cor a ser vista na tela, você também pode fazê-lo no layout.xml relevante (melhor design) adicionando esta propriedade à Visualização relevante:
fonte
tente adicionar:
fonte
Eu uso no API 16 min, alvo 23
fonte
Você pode usar de maneira simples:
fonte
fonte
Esta pergunta fala sobre como alterar a cor de fundo de uma exibição. Em uma das respostas, a pessoa explica como alterar a cor do plano de fundo durante o tempo de execução. Obviamente, você analisará como modificar outros objetos na tela, mas isso deve lhe dar um bom começo, permitindo pelo menos modificar a cor de fundo da exibição no clique do botão.
fonte
Declarando com o Android 6, use ContextCompact
fonte
Você pode usar de maneira simples:
fonte
No kotlin você pode fazer assim:
Onde
getColorCompat()
está uma função de extensão:fonte
Adiciona cor ao valor da cor anterior, então eu tenho uma cor diferente.
O que funciona para mim é:
fonte
Vamos supor que temos uma cor primária em
values=>colors.xml
como:portanto, se queremos usar nossa cor personalizada
setBackgroundColor(@ColorInt int Color)
, precisamos apenas de uma anotação@SuppressLint("ResourceAsColor")
com o construtor / método que será usado como:fonte
Você deve passar um
int
no argumentoPrimeiro exemplo:
Segundo exemplo:
fonte
Isso deve funcionar bem:
v.setBackgroundColor(0xFF00FF00);
fonte
Eu tentei de todas as maneiras acima. Mas ainda não consegui o que preciso. Aqui está a minha tentativa. Se você estiver usando o hexcode para cores e quiser definir a cor como plano de fundo da imagem, esse é o código kotlin.
fonte