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.

Exemplo de cada um dos cinco componentes de botão, com as características únicas destacadas.
Figura 1. Os cinco componentes do botão.

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 de ButtonColors 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:

Um botão preenchido com um plano de fundo roxo que mostra a mensagem "filled".
Figura 2. Um botão preenchido.

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:

Um botão tonal com um fundo roxo claro que diz "filled".
Figura 3. Um botão tonal.

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:

Um botão transparente com contorno e borda escura que mostra a mensagem "Outlined".
Figura 4. Um botão contornado.

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:

Um botão elevado com um plano de fundo cinza que mostra a mensagem "Elevado".
Figura 5. Um botão elevado.

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:

Um botão de texto com a mensagem "Text Button"
Figura 6. Um botão de texto.

Outros recursos