팝업 메시지 또는 사용자 입력 요청 표시

Dialog 구성요소는 팝업 메시지를 표시하거나 기본 앱 콘텐츠 위의 레이어에서 사용자 입력을 요청합니다. 사용자의 주의력을 끄는 방해 UI 환경을 만듭니다.

대화상자의 사용 사례는 다음과 같습니다.

  • 파일 삭제와 같은 사용자 작업 확인
  • 할 일 목록 앱과 같이 사용자 입력을 요청합니다.
  • 프로필 설정에서 국가를 선택하는 것과 같이 사용자가 선택할 수 있는 옵션 목록을 표시합니다.

이 주제에서는 다음과 같은 구현을 제공합니다.

버전 호환성

이 구현을 사용하려면 프로젝트 minSDK를 API 수준 21 이상으로 설정해야 합니다.

종속 항목

알림 대화상자 만들기

AlertDialog 컴포저블은 Material Design 테마 대화상자를 만드는 편리한 API를 제공합니다. 다음 예에서는 알림 대화상자에 두 개의 버튼을 구현합니다. 하나는 대화상자를 닫고 다른 하나는 요청을 확인합니다.

이 구현은 다음과 같이 하위 컴포저블에 인수를 전달하는 상위 컴포저블을 의미합니다.

결과

닫기 및 확인 버튼이 모두 있는 열린 알림 대화상자
그림 1. 버튼이 있는 알림 대화상자

핵심사항

AlertDialog에는 대화의 특정 요소를 처리하기 위한 특정 매개변수가 있습니다. 여기에는 다음이 포함됩니다.

  • title: 대화상자 상단에 표시되는 텍스트입니다.
  • text: 대화상자 중앙에 표시되는 텍스트입니다.
  • icon: 대화상자 상단에 표시되는 그래픽입니다.
  • onDismissRequest: 사용자가 대화상자를 닫을 때(예: 대화상자 외부를 탭하여) 호출되는 함수입니다.
  • dismissButton: 닫기 버튼 역할을 하는 컴포저블입니다.
  • confirmButton: 확인 버튼 역할을 하는 컴포저블입니다.

  • 사용자가 버튼 중 하나를 클릭하면 대화상자가 닫힙니다. 사용자가 확인을 클릭하면 확인도 처리하는 함수가 호출됩니다. 이 예에서 이러한 함수는 onDismissRequest()onConfirmRequest()입니다.

    대화상자에 더 복잡한 버튼 세트가 필요한 경우 Dialog 컴포저블을 사용하고 더 자유로운 방식으로 채우는 것이 좋습니다.

대화상자 만들기

Dialog는 콘텐츠에 스타일 지정이나 사전 정의된 슬롯을 제공하지 않는 기본 컴포저블입니다. Card와 같은 컨테이너로 채워야 하는 간단한 컨테이너입니다. 다음은 대화상자의 주요 매개변수 중 일부입니다.

  • onDismissRequest: 사용자가 대화상자를 닫을 때 호출되는 람다입니다.
  • properties: 맞춤설정을 위한 추가 범위를 제공하는 DialogProperties의 인스턴스입니다.

기본 대화상자 만들기

다음 예는 Dialog 컴포저블의 기본 구현입니다. Card를 보조 컨테이너로 사용합니다. Card가 없으면 Text 구성요소가 기본 앱 콘텐츠 위에 단독으로 표시됩니다.

결과

대화상자가 열려 있으면 그 아래에 있는 기본 앱 콘텐츠가 어두워지고 비활성화된 회색으로 표시됩니다.

라벨 이외의 내용을 포함하지 않는 대화상자입니다.
그림 2. 최소 대화상자

고급 대화상자 만들기

다음은 Dialog 컴포저블의 고급 구현입니다. 이 경우 구성요소는 이전 AlertDialog 예와 유사한 인터페이스를 수동으로 구현합니다.

결과

빅토리아주 페더탑 산의 사진이 있는 대화상자 이미지 아래에는 닫기 버튼과 확인 버튼이 있습니다.
그림 3. 이미지가 포함된 대화상자

이 가이드가 포함된 컬렉션

이 가이드는 더 광범위한 Android 개발 목표를 다루는 선별된 빠른 가이드 모음의 일부입니다.

텍스트는 모든 UI의 핵심 요소입니다. 만족도 높은 사용자 환경을 제공하기 위해 앱에서 텍스트를 표시하는 다양한 방법을 알아보세요.
사용자가 텍스트를 입력하고 다른 입력 수단을 사용하여 앱과 상호작용할 수 있는 방법을 구현하는 방법을 알아봅니다.
구성 가능한 함수를 사용하여 Material Design 디자인 시스템을 기반으로 멋진 UI 구성요소를 쉽게 만드는 방법을 알아보세요.

질문이나 의견이 있으신가요?

자주 묻는 질문(FAQ) 페이지로 이동하여 빠른 가이드를 알아보거나 문의하여 의견을 보내주세요.