Przełącz

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łączanie i wyłączanie ustawienia;
  • włączanie i wyłączanie funkcji;
  • wybieranie opcji.

Komponent składa się z 2 części: suwaka i ścieżki. Suwak to część przełącznika, którą 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ż dotknąć przełącznika, aby go zaznaczyć lub odznaczyć.

Przykłady komponentu Przełącznik w trybie jasnym i ciemnym.
Rysunek 1. Komponent przełącznika.

Implementacja podstawowa

Pełną definicję interfejsu API znajdziesz w dokumentacji Switch. Oto niektóre z najważniejszych parametrów, których możesz użyć:

  • 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 to minimalna implementacja funkcji Switch.

@Composable
fun SwitchMinimalExample() {
    var checked by remember { mutableStateOf(true) }

    Switch(
        checked = checked,
        onCheckedChange = {
            checked = it
        }
    )
}

Gdy przełącznik jest odznaczony, ta implementacja wygląda tak:

Podstawowy przełącznik, który jest odznaczony.
Rysunek 2. Odznaczony przełącznik.

Gdy przełącznik jest zaznaczony, wygląda tak:

Podstawowy przełącznik, który jest zaznaczony.
Rysunek 3. Zaznaczony przełącznik.

Implementacja zaawansowana

Główne parametry, których możesz użyć podczas implementowania bardziej zaawansowanego przełącznika:

  • thumbContent: użyj tego parametru, aby dostosować wygląd suwaka, gdy jest zaznaczony.
  • colors: użyj tego parametru, aby dostosować kolor ścieżki i suwaka.

Suwak niestandardowy

Aby utworzyć suwak niestandardowy, możesz przekazać dowolny komponent do parametru thumbContent. Oto 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(
                    imageVector = Icons.Filled.Check,
                    contentDescription = null,
                    modifier = Modifier.size(SwitchDefaults.IconSize),
                )
            }
        } else {
            null
        }
    )
}

W tej implementacji wygląd odznaczonego przełącznika jest taki sam jak w przykładzie w poprzedniej sekcji. Gdy przełącznik jest zaznaczony, ta implementacja wygląda tak:

Przełącznik, który używa parametru thumbContent do wyświetlania niestandardowej ikony po zaznaczeniu.
Rysunek 4. Przełącznik z ikoną niestandardową.

Spersonalizowane kolory

Z przykładu poniżej dowiesz się, jak używać parametru colors, aby 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,
        )
    )
}

Ta implementacja wygląda tak:

Przełącznik, który używa parametru colors do wyświetlania przełącznika ze spersonalizowanymi kolorami suwaka i ścieżki.
Rysunek 5. Przełącznik ze spersonalizowanymi kolorami.

Dodatkowe materiały