Card
컴포저블은 UI의 Material Design 컨테이너 역할을 합니다.
카드는 일반적으로 일관된 단일 콘텐츠를 표시합니다. 다음은 카드를 사용할 수 있는 몇 가지 예입니다.
- 쇼핑 앱의 제품
- 뉴스 앱의 뉴스 기사
- 커뮤니케이션 앱의 메시지
Card
를 다른 컨테이너와 구별하는 단일 콘텐츠를 묘사하는 데 중점을 둡니다. 예를 들어 Scaffold
는 전체 화면에 일반적인 구조를 제공합니다. 카드는 일반적으로 더 큰 레이아웃 내의 더 작은 UI 요소이지만 Column
또는 Row
와 같은 레이아웃 구성요소는 더 간단하고 더 일반적인 API를 제공합니다.
기본 구현
Card
는 Compose의 다른 컨테이너와 매우 유사하게 동작합니다. 내부에서 다른 컴포저블을 호출하여 콘텐츠를 선언합니다. 예를 들어 다음의 간단한 예에서 Card
에 Text
호출이 어떻게 포함되어 있는지 생각해 보세요.
@Composable
fun CardMinimalExample() {
Card() {
Text(text = "Hello, world!")
}
}
고급 구현
Card
의 API 정의는 참조를 참고하세요. 구성요소의 모양과 동작을 맞춤설정할 수 있는 여러 매개변수를 정의합니다.
주목해야 할 주요 매개변수는 다음과 같습니다.
elevation
: 구성요소에 그림자를 추가하여 배경 위로 올라간 것처럼 보이게 합니다.colors
:CardColors
유형을 사용하여 컨테이너와 모든 하위 요소의 기본 색상을 설정합니다.enabled
: 이 매개변수에false
를 전달하면 카드가 사용 중지된 것처럼 표시되고 사용자 입력에 응답하지 않습니다.onClick
: 일반적으로Card
는 클릭 이벤트를 허용하지 않습니다. 따라서 주목해야 할 기본 오버로드는onClick
매개변수를 정의하는 오버로드입니다.Card
구현이 사용자의 눌림에 응답하도록 하려면 이 오버로드를 사용해야 합니다.
다음 예에서는 이러한 매개변수와 shape
, modifier
와 같은 다른 일반적인 매개변수를 사용하는 방법을 보여줍니다.
채워진 카드
다음은 채워진 카드를 구현하는 방법의 예입니다.
여기서 핵심은 colors
속성을 사용하여 음영 색상을 변경하는 것입니다.
@Composable fun FilledCardExample() { Card( colors = CardDefaults.cardColors( containerColor = MaterialTheme.colorScheme.surfaceVariant, ), modifier = Modifier .size(width = 240.dp, height = 100.dp) ) { Text( text = "Filled", modifier = Modifier .padding(16.dp), textAlign = TextAlign.Center, ) } }
이 구현은 다음과 같이 표시됩니다.
승격된 카드
다음 스니펫은 승격된 카드를 구현하는 방법을 보여줍니다. 전용 ElevatedCard
컴포저블을 사용합니다.
elevation
속성을 사용하여 고도의 모양과 그로 인한 그림자를 제어할 수 있습니다.
@Composable fun ElevatedCardExample() { ElevatedCard( elevation = CardDefaults.cardElevation( defaultElevation = 6.dp ), modifier = Modifier .size(width = 240.dp, height = 100.dp) ) { Text( text = "Elevated", modifier = Modifier .padding(16.dp), textAlign = TextAlign.Center, ) } }
이 구현은 다음과 같이 표시됩니다.
윤곽선 카드
다음은 윤곽선이 있는 카드의 예입니다. 전용 OutlinedCard
컴포저블을 사용합니다.
@Composable fun OutlinedCardExample() { OutlinedCard( colors = CardDefaults.cardColors( containerColor = MaterialTheme.colorScheme.surface, ), border = BorderStroke(1.dp, Color.Black), modifier = Modifier .size(width = 240.dp, height = 100.dp) ) { Text( text = "Outlined", modifier = Modifier .padding(16.dp), textAlign = TextAlign.Center, ) } }
이 구현은 다음과 같이 표시됩니다.
제한사항
카드에는 기본 스크롤 또는 닫기 작업이 포함되어 있지 않지만 이러한 기능을 제공하는 컴포저블에 통합할 수 있습니다. 예를 들어 카드에서 스와이프하여 닫기를 구현하려면 SwipeToDismiss
컴포저블과 통합합니다. 스크롤과 통합하려면 verticalScroll
와 같은 스크롤 수정자를 사용하세요. 자세한 내용은 스크롤 문서를 참고하세요.