Komponent Switch umożliwia użytkownikom przełączanie się między 2 stanami: zaznaczonym i odznaczonym. W aplikacji możesz użyć przełącznika, aby umożliwić użytkownikowi wykonanie jednej z tych czynności:
- Włącz lub wyłącz ustawienie.
- Włącz lub wyłącz funkcję.
- Wybierz opcję.
Komponent składa się z 2 części: suwaka i paska. Suwak to element przełącznika, który można przeciągać, a ścieżka to tło. Użytkownik może przeciągnąć suwak w lewo lub w prawo, aby zmienić stan przełącznika. Może też kliknąć przełącznik, aby sprawdzić i wyczyścić historię.
Implementacja podstawowa
Pełną definicję interfejsu API znajdziesz w dokumentacji Switch. Oto niektóre z kluczowych parametrów, których możesz potrzebować:
checked: początkowy stan przełącznika.onCheckedChange: wywołanie zwrotne, które jest wywoływane, gdy zmienia się stan przełącznika.enabled: czy przełącznik jest włączony czy wyłączony.colors: kolory używane w przełączniku.
Poniższy przykład pokazuje minimalną implementację funkcji kompozycyjnej Switch.
@Composable fun SwitchMinimalExample() { var checked by remember { mutableStateOf(true) } Switch( checked = checked, onCheckedChange = { checked = it } ) }
Jeśli ta opcja nie jest zaznaczona, implementacja wygląda tak:
Tak wygląda zaznaczona opcja:
Implementacja zaawansowana
Główne parametry, których możesz użyć podczas wdrażania bardziej zaawansowanego przełącznika, to:
thumbContent: użyj tego, aby dostosować wygląd suwaka, gdy jest zaznaczony.colors: użyj tego, aby dostosować kolor ścieżki i suwaka.
Niestandardowa miniatura
Aby utworzyć niestandardowy suwak, możesz przekazać dowolny element kompozycyjny do parametru thumbContent. Poniżej znajdziesz przykład przełącznika, który używa ikony niestandardowej jako suwaka:
@Composable fun SwitchWithIconExample() { var checked by remember { mutableStateOf(true) } Switch( checked = checked, onCheckedChange = { checked = it }, thumbContent = if (checked) { { Icon( painter = rememberVectorPainter(AppIcons.Check), contentDescription = null, modifier = Modifier.size(SwitchDefaults.IconSize), ) } } else { null } ) }
W tej implementacji wygląd niezaznaczonego pola jest taki sam jak w przykładzie w poprzedniej sekcji. Jeśli jednak zaznaczysz to pole, implementacja będzie wyglądać tak:
Niestandardowe kolory
Poniższy przykład pokazuje, jak za pomocą parametru colors zmienić kolor suwaka i ścieżki przełącznika, biorąc pod uwagę, czy przełącznik jest zaznaczony.
@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, ) ) }
Implementacja wygląda tak: