Jetpack Compose Glimmer에서 ToggleButton는 선택된 상태에 따라 모양이 변경되는 대화형 구성요소입니다. 전환 버튼은 디스플레이 안경에 최적화되어 모양과 색상에서 명확한 시각적 전환을 제공합니다. 이러한 전환은 작업 또는 설정이 활성화된 시점을 나타냅니다.
전환 버튼을 사용하여 사용 설정 또는 사용 중지로 전환할 수 있는 작업을 표시합니다. 아이콘 전용 전환 버튼과 달리 전환 버튼은 주로 텍스트 콘텐츠를 표시하지만 추가 컨텍스트를 위한 선택적 아이콘 슬롯을 지원합니다.
다른 사용 사례의 경우 표준 버튼과 아이콘 버튼도 있습니다.

분석
전환 버튼은 상태 간에 변환되는 컨테이너와 선택적 아이콘이 있는 라벨로 구성됩니다.
| 파트 | 설명 |
|---|---|
컨테이너 |
원형 (선택되지 않음)과 모서리가 둥근 직사각형 (선택됨) 사이를 애니메이션으로 전환합니다. |
라벨 |
일반적으로 |
아이콘 (선택사항) |
주에 따라 달라질 수 있는 선두 또는 후미 슬롯 |
크기
표준 버튼과 마찬가지로 전환 버튼은 두 가지 크기 변형을 지원합니다.
| 크기 | 최소 높이 | 기본 사용 정책 |
|---|---|---|
보통 |
48.dp |
기본 대화형 크기입니다. |
크게 |
72.dp |
기본 또는 강조 토글 |
전환 버튼 기본값
기본적으로 전환 버튼은 ToggleButtonDefaults.animateShape를 사용합니다. 이렇게 하면 다음 상태 간에 원활한 전환이 이루어집니다.
- 선택 해제됨:
GlimmerTheme.shapes.large(일반적으로CircleShape). - 확인됨:
ToggleButtonDefaults.CheckedShape(20.dp모서리가 있는RoundedCornerShape).
ToggleButtonColors 클래스는 다음 상태의 색상 해상도를 관리합니다.
- 선택 안함: 기본값은
GlimmerTheme.colors.surface입니다. - Checked: 기본값은
GlimmerTheme.colors.surface입니다.
애니메이션
전환 버튼은 애니메이션에 다음 기본값을 사용합니다.
animateShape: 스프링 애니메이션 사양 (stiffness = 600f)을 사용하여 모서리 크기를 보간하는Shape을 제공합니다.colors: 두 상태의 배경 및 콘텐츠 색상을 맞춤설정하는 팩토리 함수입니다.CheckedShape: 선택된 상태에 사용되는 정적RoundedCornerShape(20.dp)입니다.contentPadding:ButtonDefaults.contentPadding에서 상속됩니다.
예: 전환 버튼
다음 코드는 기본 전환 버튼을 만듭니다.
@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) } }
예: 선행 아이콘이 있는 전환 버튼
다음 코드는 선행 아이콘이 있는 전환 버튼을 만듭니다.
@Composable fun ToggleButtonWithLeadingIconSample() { var checked by remember { mutableStateOf(false) } val text = if (checked) "Toggle on" else "Toggle off" ToggleButton( checked = checked, leadingIcon = { Icon(if (checked) FavoriteIcon else OutlinedFavoriteIcon, "Localized description") }, onCheckedChange = { checked = it }, ) { Text(text) } }