W Jetpack Compose Glimmer ToggleButton to interaktywny komponent
który zmienia swój wygląd w zależności od stanu zaznaczenia. Przyciski przełączania są zoptymalizowane pod kątem okularów z wyświetlaczem, aby zapewnić wyraźne przejścia wizualne kształtu i koloru. Te przejścia wskazują, kiedy działanie lub ustawienie jest aktywne.
Używaj przycisków przełączania, aby udostępniać działania, które można włączać i wyłączać. W przeciwieństwie do przełączników z samymi ikonami przycisk przełączania wyświetla głównie tekst, ale obsługuje też opcjonalne miejsca na ikony, które zapewniają dodatkowy kontekst.
W innych przypadkach użycia dostępne są też standardowe przyciski i przyciski z ikonami.
Anatomia
Przycisk przełączania składa się z kontenera, który zmienia się między stanami, oraz etykiety z opcjonalnymi ikonami.
| Część | Opis |
|---|---|
Kontener |
Animuje między kształtem okrągłym (niezaznaczony) a zaokrąglonym prostokątem (zaznaczony). |
Etykieta |
Zwykle element kompozycyjny |
Ikony (opcjonalnie) |
Miejsca na początku lub na końcu, które mogą się różnić w zależności od stanu. |
Rozmiary
Podobnie jak standardowe przyciski, przyciski przełączania obsługują 2 warianty rozmiaru:
| Rozmiar | Minimalna wysokość | Domyślne użycie |
|---|---|---|
Średni |
48.dp |
Domyślny rozmiar interaktywny. |
Duży |
72.dp |
Przełączniki główne lub o wysokim kontraście. |
Domyślne ustawienia przycisku przełączania
Domyślnie przyciski przełączania używają ToggleButtonDefaults.animateShape. Tworzy to płynne przejście między tymi stanami:
- Niezaznaczony:
GlimmerTheme.shapes.large(zwykleCircleShape). - Zaznaczony:
ToggleButtonDefaults.CheckedShape(RoundedCornerShapez rogami20.dp).
Klasa ToggleButtonColors zarządza rozdzielczością kolorów w tych stanach:
- Niezaznaczony: domyślnie
GlimmerTheme.colors.surface. - Zaznaczony: domyślnie
GlimmerTheme.colors.surface.
Animacja
W przypadku animacji przyciski przełączania używają tych ustawień domyślnych:
animateShape: udostępniaShape, który interpoluje rozmiary rogów za pomocą specyfikacji animacji sprężynowejstiffness = 600f.colors: funkcja fabryczna do dostosowywania kolorów tła i treści w obu stanach.CheckedShape: statycznyRoundedCornerShape(20.dp)używany w stanie zaznaczenia.contentPadding: dziedziczy zButtonDefaults.contentPadding.
Przykład: przycisk przełączania
Ten kod tworzy podstawowy przycisk przełączania:
@Composable fun ToggleButtonSample() { var checked by remember { mutableStateOf(false) } val text = if (checked) "Toggle on" else "Toggle off" ToggleButton( checked = checked, onCheckedChange = { checked = it } ) { Text(text) } }
Przykład: przycisk przełączania z ikoną na początku
Ten kod tworzy przycisk przełączania z ikoną na początku:
@Composable fun ToggleButtonWithLeadingIconSample() { var checked by remember { mutableStateOf(false) } ToggleButton( checked = checked, leadingIcon = { Icon( if (checked) FavoriteIcon else OutlinedFavoriteIcon, contentDescription = "Toggle favorite" ) }, onCheckedChange = { checked = it } ) { Text(if (checked) "On" else "Off") } }