Eu tenho um botão como no seguinte:
<Button
android:text="Submit"
android:id="@+id/Button01"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
</Button>
No meu onCreate()
evento, eu estou chamando Button01 assim:
setContentView(R.layout.main);
View Button01 = this.findViewById(R.id.Button01);
Button01.setOnClickListener(this);
Há um plano de fundo no aplicativo e desejo definir uma opacidade neste botão de envio. Como posso definir uma opacidade para essa visualização? É algo que posso definir no lado java ou no arquivo main.xml?
No lado do java eu tentei Button01.mutate().SetAlpha(100)
, mas isso me deu um erro.
Estou impressionado com as respostas MUITO mais complicadas de todos os outros .
XML
Você pode simplesmente definir o alfa na definição de cores do botão (ou em qualquer outra visualização) no seu xml:
No exemplo acima, a cor seria um vermelho parcialmente transparente.
Ao definir a cor de uma visualização, o formato pode ser
#RRGGBB
ou#AARRGGBB
, ondeAA
está o valor hexadecimal alfa.FF
seria totalmente opaco e00
totalmente transparente.Dinamicamente
Se você precisar alterar dinamicamente a opacidade no seu código, use
Onde o INT varia de
0
(totalmente transparente) a255
(totalmente opaco).fonte
android:color
atributo.background
Opacidade incorreta não éview
opacidade. Não é equivalente em muitos casos de usoEu acho que você já deve ter encontrado a resposta, mas se não (e para outros desenvolvedores), você pode fazê-lo assim:
Aqui eu configurei a opacidade para 45. Você pode basicamente defini-la de qualquer coisa entre 0 (totalmente transparente) a 255 (completamente opaco)
fonte
O que eu sugiro que você faça é criar uma cor ARGB personalizada em seu arquivo colors.xml, como:
defina o plano de fundo do botão para essa cor:
Outra coisa que você pode fazer se quiser brincar com a forma do botão é criar um recurso desenhável do Shape, onde você configura as propriedades com a aparência do botão:
arquivo: res / drawable / rounded_corner_box.xml
Em seguida, use isso como plano de fundo do botão:
fonte
De acordo com os documentos do Android, o alpha é um valor entre 0 e 1. Portanto, para configurá-lo, use algo como isto:
fonte
Muito mais fácil do exposto. O atributo alfa padrão existe para o botão
O intervalo está entre 0 para total transparência e 1 para total opacidade.
fonte
O que foi dito acima é algo que eu sei ... acho que criar uma classe de botão personalizada é a melhor ideia
Nível 11 da API
Recentemente, deparei-me com este atributo android: alpha xml, que assume um valor entre 0 e 1. O método correspondente é setAlpha (float) .
fonte
@android:color/transparent
como plano de fundo tornará a visualização completamente transparente. A@android:alpha
parte - parece ser um adendo.Embora
btnMybutton.getBackground().setAlpha(45);
seja uma boa idéia, basta aplicar alfa ao plano de fundo e não à visualização completa.Se você deseja aplicar alfa ao modo de exibição, use-o
btnMybutton.setAlpha(0.30f);
. Isso aplica opacidade ao modo de exibição. Ele aceita um valor entre 0 e 1.Doc diz:
fonte
Eu encontrei esse problema com o ICS / JB porque os botões padrão do tema Holo consistem em imagens ligeiramente transparentes. Para um fundo, isso é especialmente perceptível.
Gingerbread vs. ICS +:
Copiar todos os estados e imagens que podem ser desenhados para cada resolução e tornar as imagens transparentes sólidas é uma dor, por isso optei por uma solução mais suja: enrole o botão em um suporte com fundo branco. Aqui está um drawable XML bruto (ButtonHolder) que faz exatamente isso:
Seu arquivo XML
ButtonHolder.xml
styles.xml
No entanto, isso resulta em uma borda branca porque as imagens do botão Holo incluem margens para contabilizar o espaço pressionado:
Portanto, a solução é dar ao fundo branco uma margem (4dp funcionou para mim) e cantos arredondados (2dp) para ocultar completamente o branco e tornar o botão sólido:
ButtonHolder.xml
O resultado final é assim:
Você deve direcionar esse estilo para a v14 + e ajustá-lo ou excluí-lo para o Gingerbread / Honeycomb porque o tamanho da imagem do botão nativo é diferente do ICS e do JB (por exemplo, esse estilo exato atrás de um botão Gingerbread resulta em um pouco de branco abaixo do botão).
fonte
Para uma visualização, você pode definir a opacidade da seguinte maneira.
A propriedade
view.setAlpha(int)
foi descontinuada para a versão da API maior que 11. A partir de então, a propriedade like.setAlpha(0.5f)
é usada.fonte
Para a API <11 para a cor textView, fiz o seguinte:
Um pouco complicado, mas ei, ele funciona :-)
fonte
Sei que isso já tem várias respostas, mas achei que para os botões é mais fácil criar seus próprios seletores .xml e configurá-los para o segundo plano. Dessa forma, você também pode alterar seu estado quando pressionado ou ativado e assim por diante. Aqui está um trecho rápido de um que eu uso. Se você deseja adicionar uma transparência a qualquer uma das cores, adicione um valor hexadecimal inicial (#XXcccccc). (XX == "alfa de cor")
fonte