반응형
토글이라고도 불리우는 스위치는 기능을 켜고 끄는 로직에서 많이 사용되는 컴포넌트입니다.
기존 Material 방식의 스위치 디자인
신규 Compose Material3 방식의 스위치 디자인
토글 색상 속성을 수정한다면 SwitchDefaults.colors를 통해 설정해줄 수 있습니다.
Switch(
checked = isChecked,
onCheckedChange = onCheckedChange,
colors = SwitchDefaults.colors(
checkedThumbColor = colorResource(R.color.colorPrimary),
uncheckedThumbColor = colorResource(R.color.unActiveBackground)
)
)
.
.
.
@Composable
fun colors(
checkedThumbColor: Color = SwitchTokens.SelectedHandleColor.value,
checkedTrackColor: Color = SwitchTokens.SelectedTrackColor.value,
checkedBorderColor: Color = Color.Transparent,
checkedIconColor: Color = SwitchTokens.SelectedIconColor.value,
uncheckedThumbColor: Color = SwitchTokens.UnselectedHandleColor.value,
uncheckedTrackColor: Color = SwitchTokens.UnselectedTrackColor.value,
uncheckedBorderColor: Color = SwitchTokens.UnselectedFocusTrackOutlineColor.value,
uncheckedIconColor: Color = SwitchTokens.UnselectedIconColor.value,
disabledCheckedThumbColor: Color = SwitchTokens.DisabledSelectedHandleColor.value
.copy(alpha = SwitchTokens.DisabledSelectedHandleOpacity)
.compositeOver(MaterialTheme.colorScheme.surface),
disabledCheckedTrackColor: Color = SwitchTokens.DisabledSelectedTrackColor.value
.copy(alpha = SwitchTokens.DisabledTrackOpacity)
.compositeOver(MaterialTheme.colorScheme.surface),
disabledCheckedBorderColor: Color = Color.Transparent,
disabledCheckedIconColor: Color = SwitchTokens.DisabledSelectedIconColor.value
.copy(alpha = SwitchTokens.DisabledSelectedIconOpacity)
.compositeOver(MaterialTheme.colorScheme.surface),
disabledUncheckedThumbColor: Color = SwitchTokens.DisabledUnselectedHandleColor.value
.copy(alpha = SwitchTokens.DisabledUnselectedHandleOpacity)
.compositeOver(MaterialTheme.colorScheme.surface),
disabledUncheckedTrackColor: Color = SwitchTokens.DisabledUnselectedTrackColor.value
.copy(alpha = SwitchTokens.DisabledTrackOpacity)
.compositeOver(MaterialTheme.colorScheme.surface),
disabledUncheckedBorderColor: Color =
SwitchTokens.DisabledUnselectedTrackOutlineColor.value
.copy(alpha = SwitchTokens.DisabledTrackOpacity)
.compositeOver(MaterialTheme.colorScheme.surface),
disabledUncheckedIconColor: Color = SwitchTokens.DisabledUnselectedIconColor.value
.copy(alpha = SwitchTokens.DisabledUnselectedIconOpacity)
.compositeOver(MaterialTheme.colorScheme.surface),
): SwitchColors = SwitchColors(
checkedThumbColor = checkedThumbColor,
checkedTrackColor = checkedTrackColor,
checkedBorderColor = checkedBorderColor,
checkedIconColor = checkedIconColor,
uncheckedThumbColor = uncheckedThumbColor,
uncheckedTrackColor = uncheckedTrackColor,
uncheckedBorderColor = uncheckedBorderColor,
uncheckedIconColor = uncheckedIconColor,
disabledCheckedThumbColor = disabledCheckedThumbColor,
disabledCheckedTrackColor = disabledCheckedTrackColor,
disabledCheckedBorderColor = disabledCheckedBorderColor,
disabledCheckedIconColor = disabledCheckedIconColor,
disabledUncheckedThumbColor = disabledUncheckedThumbColor,
disabledUncheckedTrackColor = disabledUncheckedTrackColor,
disabledUncheckedBorderColor = disabledUncheckedBorderColor,
disabledUncheckedIconColor = disabledUncheckedIconColor
)
내부적으로 다양한 컬러 요소를 적용할 수 있는데,
이를 통해 각 상황별 Thumb, 또는 배경 공간인 Track의 색상을 지정할 수 있습니다.
반응형