Button
Os botões são componentes fundamentais que permitem ao usuário acionar uma ação definida. Há cinco tipos de botões. A tabela a seguir descreve a aparência de cada um dos cinco tipos de botão, além de onde eles devem ser usados.
Tipo |
Aparência |
Objetivo |
---|---|---|
Sólido |
Plano de fundo sólido com texto em contraste. |
Botões de maior ênfase. Eles são usados para ações principais em um aplicativo, como "enviar" e "salvar". O efeito de sombra enfatiza a importância do botão. |
Tonalidade preenchida |
A cor de fundo varia para combinar com a superfície. |
Também para ações principais ou significativas. Os botões preenchidos têm mais peso visual e são adequados para funções como "Adicionar ao carrinho" e "Fazer login". |
Elevada |
Se destaca por ter uma sombra. |
Tem uma função semelhante à dos botões tonais. Aumente a elevação para que o botão apareça ainda mais. |
Delineado |
Apresenta uma borda sem preenchimento. |
Botões de prioridade média, que contêm ações importantes, mas não principais. Eles combinam bem com outros botões para indicar ações secundárias e alternativas, como "Cancelar" ou "Voltar". |
Texto |
Mostra texto sem plano de fundo ou borda. |
Botões de baixa ênfase, ideais para ações menos importantes, como links de navegação ou funções secundárias, como "Saiba mais" ou "Ver detalhes". |
A imagem a seguir demonstra os cinco tipos de botões no Material Design.
Superfície da API
onClick
: a função chamada quando o usuário pressiona o botão.enabled
: quando falso, esse parâmetro faz com que o botão apareça indisponível e inativo.colors
: uma instância deButtonColors
que determina as cores usadas no botão.contentPadding
: o padding dentro do botão.
Botão preenchido
O componente de botão preenchido usa o elemento combinável básico Button
. Ele é
preenchido com uma cor sólida por padrão. O snippet a seguir demonstra como
implementar o componente:
@Composable fun FilledButtonExample(onClick: () -> Unit) { Button(onClick = { onClick() }) { Text("Filled") } }
Essa implementação aparece da seguinte maneira:

Botão tonal preenchido
O componente de botão tonal preenchido usa o elemento combinável FilledTonalButton
.
Por padrão, ele é preenchido com uma cor tonal.
O snippet a seguir demonstra como implementar o componente:
@Composable fun FilledTonalButtonExample(onClick: () -> Unit) { FilledTonalButton(onClick = { onClick() }) { Text("Tonal") } }
Essa implementação aparece da seguinte maneira:

Botão contornado
O componente de botão delineado usa o elemento combinável OutlinedButton
. Ele
aparece com um contorno por padrão.
O snippet a seguir demonstra como implementar o componente:
@Composable fun OutlinedButtonExample(onClick: () -> Unit) { OutlinedButton(onClick = { onClick() }) { Text("Outlined") } }
Essa implementação aparece da seguinte maneira:

Botão elevado
O componente de botão elevado usa o elemento combinável ElevatedButton
. Ela tem
uma sombra que representa o efeito de elevação por padrão. Ele é
essencialmente um botão delineado com uma sombra.
O snippet a seguir demonstra como implementar o componente:
@Composable fun ElevatedButtonExample(onClick: () -> Unit) { ElevatedButton(onClick = { onClick() }) { Text("Elevated") } }
Essa implementação aparece da seguinte maneira:

Botão de texto
O componente do botão de texto usa o elemento combinável TextButton
. Até ser pressionado,
ele aparece apenas como texto. Ele não tem um preenchimento sólido ou contorno por padrão.
O snippet a seguir demonstra como implementar o componente:
@Composable fun TextButtonExample(onClick: () -> Unit) { TextButton( onClick = { onClick() } ) { Text("Text Button") } }
Essa implementação aparece da seguinte maneira:
