Estou confuso sobre os estilos de botões para o design de materiais. Gostaria de obter botões coloridos elevados, como no link anexado., Como os botões "forçar parada" e "desinstalar" vistos na seção de uso. Existem estilos disponíveis ou preciso defini-los?
http://www.google.com/design/spec/components/buttons.html#buttons-usage
Não consegui encontrar os estilos de botão padrão.
Exemplo:
<Button style="@style/PrimaryButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Calculate"
android:id="@+id/button3"
android:layout_below="@+id/editText5"
android:layout_alignEnd="@+id/editText5"
android:enabled="true" />
Se eu tentar alterar a cor de fundo do botão adicionando
android:background="@color/primary"
todos os estilos desaparecem, como animação por toque, sombra, canto arredondado etc.
Respostas:
Adicionarei minha resposta, já que não uso nenhuma das outras respostas fornecidas.
Com a Biblioteca de suporte v7, todos os estilos já estão definidos e prontos para uso, para os botões padrão, todos esses estilos estão disponíveis:
Widget.AppCompat.Button
:Widget.AppCompat.Button.Colored
:Widget.AppCompat.Button.Borderless
Widget.AppCompat.Button.Borderless.Colored
:Para responder à pergunta, o estilo a ser usado é, portanto,
Como mudar a cor
Para todo o aplicativo:
A cor de todos os controles da interface do usuário (não apenas botões, mas também botões de ação flutuantes, caixas de seleção etc.) é gerenciada pelo atributo,
colorAccent
conforme explicado aqui . Você pode modificar esse estilo e aplicar sua própria cor na definição do seu tema:Para um botão específico:
Se você precisar alterar o estilo de um botão específico, poderá definir um novo estilo, herdando um dos estilos principais descritos acima. No exemplo abaixo, mudei as cores de fundo e de fonte:
Então você só precisa aplicar esse novo estilo no botão com:
Para definir um design de botão padrão em um layout, inclua esta linha no tema styles.xml:
onde
@style/btn
está o seu tema de botão. Isso define o estilo do botão para todos os botões em um layout com um tema específicofonte
colorButtonNormal
attr não funciona para mim no Android 4.1.2. Não é possível definir a cor do botão (android:background
quebra o estilo do material).style=""
em vez deAndroid:theme=""
mudar para o último que problema corrigido para mimSolução mais simples
Etapa 1: usar a biblioteca de suporte mais recente
Etapa 2: use AppCompatActivity como sua classe de atividade pai
Etapa 3: use o namespace do aplicativo no arquivo XML de layout
Etapa 4: Use AppCompatButton em vez de Button
fonte
android.support.v7.widget.AppCompatButton
porque a ferramenta de construção usa isso automaticamente quando você especificaButton
textColor
substitui a cor do texto no estado desativado .Widget.MaterialComponents.Button.OutlinedButton
pelo menos.Se eu entendi direito, você deseja fazer algo assim:
Nesse caso, deve ser apenas o suficiente para usar:
Ou para API menor que 21:
Além de Usando o Tutorial do Tema do Material .
A variante animada está aqui .
fonte
Aqui está como consegui o que queria.
Primeiro, criei um botão (in
styles.xml
):A ondulação e o plano de fundo do botão, como um desenho
primary_round.xml
:Isso adicionou o efeito cascata que eu estava procurando.
fonte
Adicione a dependência ao seu
build.gradle
:Em seguida, adicione o
MaterialButton
ao seu layout:Você pode verificar a documentação completa aqui e a API aqui .
Para alterar a cor de fundo, você tem 2 opções.
backgroundTint
atributoAlgo como:
materialThemeOverlay
atributo.Algo como:
A opção nº 2 requer o
'com.google.android.material:material:1.1.0'.
Biblioteca de suporte antigo:
Com a nova Biblioteca de Suporte 28.0.0 , a Biblioteca de Design agora contém o
MaterialButton
.Você pode adicionar este botão ao nosso arquivo de layout com:
Por padrão, essa classe usará a cor de destaque do seu tema para a cor de fundo preenchida pelos botões e o branco para a cor do texto dos botões.
Você pode personalizar o botão com estes atributos:
app:rippleColor
: A cor a ser usada para o efeito cascata do botãoapp:backgroundTint
: Usado para aplicar uma tonalidade ao fundo do botão. Se você deseja alterar a cor do plano de fundo do botão, use este atributo em vez do plano de fundo.app:strokeColor
: A cor a ser usada para o toque no botãoapp:strokeWidth
: A largura a ser usada para o toque no botãoapp:cornerRadius
: Usado para definir o raio usado nos cantos do botãofonte
Aqui está um exemplo que ajudará a aplicar o estilo do botão de maneira consistente em seu aplicativo.
Aqui está um exemplo de tema que usei com os estilos específicos.
Foi assim que defini a forma e os efeitos dos botões na pasta res / drawable-v21 ...
Os cantos 2dp devem mantê-lo consistente com o tema Material.
fonte
Ao lado
android.support.design.button.MaterialButton
( mencionado por Gabriele Mariotti ),Há também outro
Button
widget chamadocom.google.android.material.button.MaterialButton
que tem estilos diferentes e se estende deAppCompatButton
:Preenchido, elevado
Button
(padrão) :Preenchido, sem melhoria
Button
:Texto
Button
:Ícone
Button
:Um texto
Button
com um ícone ::Leia: https://material.io/develop/android/components/material-button/
fonte
app:backgroundTint
eapp:backgroundTintMode
da documentação .Tentei várias bibliotecas de respostas e de terceiros, mas nenhuma estava mantendo a fronteira e aumentou o efeito no pré-pirulito, enquanto causava o efeito cascata no pirulito sem inconvenientes. Aqui está minha solução final combinando várias respostas (borda / relevo não são bem renderizadas em gifs devido à profundidade de cores da escala de cinza):
Pirulito
Pré-pirulito
build.gradle
layout.xml
drawable-v21 / btn_bg.xml
drawable / btn_bg.xml
Atividade onCreate
fonte
1) Você pode criar um botão de canto arredondado definindo xml drawable e pode aumentar ou diminuir o raio para aumentar ou diminuir a redondeza do canto do botão. Defina este desenho XML como pano de fundo do botão.
2) Para alterar a sombra padrão e a animação de transição de sombra entre os estados dos botões, é necessário definir o seletor e aplicá-lo ao botão usando a propriedade android: stateListAnimator. Para uma referência completa de personalização de botões: http://www.zoftino.com/android-button
fonte
Acabei de criar uma biblioteca Android, que permite modificar facilmente a cor do botão e a cor da ondinha
https://github.com/xgc1986/RippleButton
Você não precisa criar um estilo para cada botão que deseja com uma cor diferente, permitindo que você personalize as cores aleatoriamente
fonte
rippleColor has already been defined
alguns usuários já o mencionaram nos 'problemas'você pode dar aviação à vista adicionando eixo z a ela e pode ter sombra padrão nela. esse recurso foi fornecido na visualização L e estará disponível após o lançamento. Por enquanto, você pode simplesmente adicionar uma imagem para dar uma olhada no fundo do botão
fonte