O Switch componente permite que os usuários alternem entre dois estados: marcado
e desmarcado. No app, você pode usar um botão para permitir que o usuário faça uma das seguintes ações:
- Ativar ou desativar uma configuração.
- Ativar ou desativar um recurso.
- Selecionar uma opção.
O componente tem duas partes: o controle deslizante e a faixa. O controle deslizante é a parte arrastável do botão, e a faixa é o plano de fundo. O usuário pode arrastar o controle deslizante para a esquerda ou para a direita para mudar o estado do botão. Ele também pode tocar no botão para marcar e desmarcar.
Implementação básica
Consulte a referência Switch para uma definição completa da API. Confira alguns dos principais parâmetros que você pode precisar usar:
checked: o estado inicial do botão.onCheckedChange: um callback que é chamado quando o estado do botão muda.enabled: se o botão está ativado ou desativado.colors: as cores usadas para o botão.
O exemplo a seguir é uma implementação mínima do elemento combinável Switch.
@Composable fun SwitchMinimalExample() { var checked by remember { mutableStateOf(true) } Switch( checked = checked, onCheckedChange = { checked = it } ) }
Essa implementação aparece da seguinte maneira quando desmarcada:
Esta é a aparência quando marcada:
Implementação avançada
Os principais parâmetros que você pode usar ao implementar um botão mais avançado são os seguintes:
thumbContent: use esse parâmetro para personalizar a aparência do controle deslizante quando ele estiver marcado.colors: use esse parâmetro para personalizar a cor da faixa e do controle deslizante.
Controle deslizante personalizado
Você pode transmitir qualquer elemento combinável para o parâmetro thumbContent para criar um controle deslizante personalizado. Confira a seguir um exemplo de botão que usa um ícone personalizado para o controle deslizante:
@Composable fun SwitchWithIconExample() { var checked by remember { mutableStateOf(true) } Switch( checked = checked, onCheckedChange = { checked = it }, thumbContent = if (checked) { { Icon( imageVector = Icons.Filled.Check, contentDescription = null, modifier = Modifier.size(SwitchDefaults.IconSize), ) } } else { null } ) }
Nessa implementação, a aparência desmarcada é a mesma do exemplo na seção anterior. No entanto, quando marcada, essa implementação aparece da seguinte maneira:
Cores personalizadas
O exemplo a seguir demonstra como usar o parâmetro de cores para mudar a cor do controle deslizante e da faixa de um botão, considerando se o botão está marcado.
@Composable fun SwitchWithCustomColors() { var checked by remember { mutableStateOf(true) } Switch( checked = checked, onCheckedChange = { checked = it }, colors = SwitchDefaults.colors( checkedThumbColor = MaterialTheme.colorScheme.primary, checkedTrackColor = MaterialTheme.colorScheme.primaryContainer, uncheckedThumbColor = MaterialTheme.colorScheme.secondary, uncheckedTrackColor = MaterialTheme.colorScheme.secondaryContainer, ) ) }
Essa implementação aparece da seguinte maneira: