본문 바로가기
안드로이드/메세징

안드로이드 Dialog

by 김어찐 2022. 6. 13.
728x90

개발자가 필요할 때 사용자에게 메시지를 전달하는 용도로 사용하며 다이얼로그가 나타나 있을 때는 주변의 View를 사용할 수 없다.
메시지 전달이나 입력 등의 용도로 사용한다.

 

기본 다이올로그

기본 다이얼로그는 메시지와 최대 3개의 버튼을 제공할 수 있다.

 

커스텀 다이올로그

기본 다이얼로그에 View를 설정하면 다이얼로그에 표시되는 모양을 자유롭게 구성할 수 있다.

 

DatePicker

다이얼로그를 통해 날짜를 선택할 수 있도록 제공되는 다이얼로그이다.

 

TimePicker

다이얼로그를 통해 시간을 선택할 수 있도록 제공되는 다이얼로그이다.

 

 

 

package com.example.dialog

import android.app.DatePickerDialog
import android.app.TimePickerDialog
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.DatePicker
import androidx.appcompat.app.AlertDialog
import kotlinx.android.synthetic.main.activity_main.*
import kotlinx.android.synthetic.main.custom_dialog.view.*
import java.util.*

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        button.setOnClickListener {
            val builder = AlertDialog.Builder(this)

            builder.setTitle("기본 다이얼로그")
            builder.setMessage("기본 다이얼로그")
            builder.setIcon(R.mipmap.ic_launcher)

            builder.setPositiveButton("Positive") { diologInterface, i ->
                textView.text = "Positive 버튼을 눌렀습니다"
            }

            builder.setNeutralButton("Neutral") { diologInterface, i ->
                textView.text = "Neutral 버튼을 눌렀습니다"
            }
            builder.setNegativeButton("Negative") { diologInterface, i ->
                textView.text = "Positive 버튼을 눌렀습니다"
            }

            builder.show()
        }

        button2.setOnClickListener {
            val builder = AlertDialog.Builder(this)
            builder.setTitle("커스텀 다이얼로그")
            builder.setTitle("커스텀 다이얼로그")
            builder.setIcon(R.mipmap.ic_launcher)

            val custom_view = layoutInflater.inflate(R.layout.custom_dialog,null)
            builder.setView(custom_view)

            builder.setPositiveButton("확인"){dialogInterface, i ->
                custom_view.run {
                    textView.text = "${custom_edit1.text}\n"
                    textView.append("${custom_edit2.text}")
                }
            }

            builder.setNegativeButton("취소",null)

            builder.show()
        }

        button3.setOnClickListener {
            val calendar = Calendar.getInstance()

            val year = calendar.get(Calendar.YEAR)
            val month = calendar.get(Calendar.MONTH)
            val day = calendar.get(Calendar.DAY_OF_MONTH)

            val listener1 =DatePickerDialog.OnDateSetListener { view, year, month, dayOfMonth ->
                textView.text= "${year}년 ${month+1}월 ${dayOfMonth}일"
            }

            val picker = DatePickerDialog(this,listener1,year,month,day)

            picker.show()
        }
        
        button4.setOnClickListener { 
            val calendar = Calendar.getInstance()
            
            val hour = calendar.get(Calendar.HOUR)
            val minute = calendar.get(Calendar.MINUTE)
            
            val listener2 = TimePickerDialog.OnTimeSetListener { view, hourOfDay, minute ->
                textView.text = "${hour}시 ${minute}분"
            }
            // 마지막 false (24시간제 사용할건지 12간제 사용할건지)
            val picker = TimePickerDialog(this,listener2,hour,minute,false)

            picker.show()
        }
    }
}

728x90

'안드로이드 > 메세징' 카테고리의 다른 글

안드로이드 Notification  (0) 2022.06.13
안드로이드 항목 선택 Dialog  (0) 2022.06.13
안드로이드 ListDialog  (0) 2022.06.13
안드로이드 SnackBar  (0) 2022.06.13
안드로이드 Toast  (0) 2022.06.09