Dialog
구성요소는 팝업 메시지를 표시하거나 기본 앱 콘텐츠 위의 레이어에서 사용자 입력을 요청합니다. 사용자의 주의력을 끄는 방해 UI 환경을 만듭니다.
대화상자의 사용 사례는 다음과 같습니다.
- 파일 삭제와 같은 사용자 작업 확인
- 할 일 목록 앱과 같이 사용자 입력을 요청합니다.
- 프로필 설정에서 국가를 선택하는 것과 같이 사용자가 선택할 수 있는 옵션 목록을 표시합니다.
이 주제에서는 다음과 같은 구현을 제공합니다.
버전 호환성
이 구현을 사용하려면 프로젝트 minSDK를 API 수준 21 이상으로 설정해야 합니다.
종속 항목
알림 대화상자 만들기
AlertDialog
컴포저블은 Material Design 테마 대화상자를 만드는 편리한 API를 제공합니다. 다음 예에서는 알림 대화상자에 두 개의 버튼을 구현합니다. 하나는 대화상자를 닫고 다른 하나는 요청을 확인합니다.
이 구현은 다음과 같이 하위 컴포저블에 인수를 전달하는 상위 컴포저블을 의미합니다.
결과
![닫기 및 확인 버튼이 모두 있는 열린 알림 대화상자](https://developer.android.com/static/develop/ui/compose/images/components/dialog-alert.png?hl=ko)
핵심사항
AlertDialog
에는 대화의 특정 요소를 처리하기 위한 특정 매개변수가 있습니다. 여기에는 다음이 포함됩니다.
title
: 대화상자 상단에 표시되는 텍스트입니다.text
: 대화상자 중앙에 표시되는 텍스트입니다.icon
: 대화상자 상단에 표시되는 그래픽입니다.onDismissRequest
: 사용자가 대화상자를 닫을 때(예: 대화상자 외부를 탭하여) 호출되는 함수입니다.dismissButton
: 닫기 버튼 역할을 하는 컴포저블입니다.confirmButton
: 확인 버튼 역할을 하는 컴포저블입니다.사용자가 버튼 중 하나를 클릭하면 대화상자가 닫힙니다. 사용자가 확인을 클릭하면 확인도 처리하는 함수가 호출됩니다. 이 예에서 이러한 함수는
onDismissRequest()
및onConfirmRequest()
입니다.대화상자에 더 복잡한 버튼 세트가 필요한 경우
Dialog
컴포저블을 사용하고 더 자유로운 방식으로 채우는 것이 좋습니다.
대화상자 만들기
Dialog
는 콘텐츠에 스타일 지정이나 사전 정의된 슬롯을 제공하지 않는 기본 컴포저블입니다. Card
와 같은 컨테이너로 채워야 하는 간단한 컨테이너입니다. 다음은 대화상자의 주요 매개변수 중 일부입니다.
onDismissRequest
: 사용자가 대화상자를 닫을 때 호출되는 람다입니다.properties
: 맞춤설정을 위한 추가 범위를 제공하는DialogProperties
의 인스턴스입니다.
기본 대화상자 만들기
다음 예는 Dialog
컴포저블의 기본 구현입니다. Card
를 보조 컨테이너로 사용합니다. Card
가 없으면 Text
구성요소가 기본 앱 콘텐츠 위에 단독으로 표시됩니다.
결과
대화상자가 열려 있으면 그 아래에 있는 기본 앱 콘텐츠가 어두워지고 비활성화된 회색으로 표시됩니다.
![라벨 이외의 내용을 포함하지 않는 대화상자입니다.](https://developer.android.com/static/develop/ui/compose/images/components/dialog-minimal.png?hl=ko)
고급 대화상자 만들기
다음은 Dialog
컴포저블의 고급 구현입니다. 이 경우 구성요소는 이전 AlertDialog
예와 유사한 인터페이스를 수동으로 구현합니다.
결과
![빅토리아주 페더탑 산의 사진이 있는 대화상자 이미지 아래에는 닫기 버튼과 확인 버튼이 있습니다.](https://developer.android.com/static/develop/ui/compose/images/components/dialog-image.png?hl=ko)
이 가이드가 포함된 컬렉션
이 가이드는 더 광범위한 Android 개발 목표를 다루는 선별된 빠른 가이드 모음의 일부입니다.
![](https://developer.android.com/static/images/quick-guides/collection-illustration.png?hl=ko)
표시 텍스트
![](https://developer.android.com/static/images/quick-guides/collection-illustration.png?hl=ko)
사용자 입력 요청
![](https://developer.android.com/static/images/quick-guides/collection-illustration.png?hl=ko)