Komponent Switch
pozwala użytkownikom przełączać się między 2 stanami: zaznaczonym i niezaznaczonym. W aplikacji możesz użyć przełącznika, aby pozwolić użytkownikowi na wykonanie jednej z tych czynności:
:
- Włącz lub wyłącz ustawienie.
- Włączanie i wyłączanie funkcji.
- Wybierz opcję.
Komponent składa się z 2 części: kciuka i ścieżki dźwiękowej. Kciuk w górę to element, który można przeciągać a ścieżka dźwiękowa stanowi tło. Użytkownik może przeciągnąć suwak w lewo lub w prawo, aby zmienić stan przełącznika. Mogą też kliknąć użyj przełącznika, aby ją sprawdzić i wyczyścić.

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łączenia.onCheckedChange
: wywołanie zwrotne, które jest wywoływane, gdy zmienia się stan przełącznika.enabled
: wskazuje, czy przełącznik jest włączony czy wyłączony.colors
: kolory przełącznika.
Poniższy przykład to minimalna implementacja funkcji Switch
.
@Composable fun SwitchMinimalExample() { var checked by remember { mutableStateOf(true) } Switch( checked = checked, onCheckedChange = { checked = it } ) }
Gdy ta opcja nie jest zaznaczona, implementacja wygląda tak:

Gdy opcja jest zaznaczona, wygląda tak:

Implementacja zaawansowana
Główne parametry, których możesz użyć podczas wdrażania bardziej zaawansowanego przełącznika, to:
thumbContent
: umożliwia dostosowanie wyglądu kciuka zaznaczono.colors
: umożliwia dostosowanie koloru ścieżki i kciuka.
Niestandardowa miniatura
Aby utworzyć niestandardowy miniaturę, możesz podać dowolny komponent w parametrze thumbContent
. Poniżej znajdziesz przykład przełącznika, który używa niestandardowej ikony w przycisku:
@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 } ) }
W tej implementacji wygląd niezaznaczonego pola jest taki sam jak w przykładzie w poprzedniej sekcji. Po zaznaczeniu tej opcji implementacja wygląda jednak tak: następujące:

Kolory niestandardowe
W tym przykładzie pokazujemy, jak za pomocą parametru colors zmienić kolor suwaka i ścieżki, biorąc pod uwagę to, czy suwak 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:
