1. 다이얼로그란?
- 개발자가 필요할 때 사용자에게 메세지를 전달하는 용도로 사용
- 다이얼로그가 나타나 있을 때는 주변의 뷰를 누를 수 없다.
- 메세지 전달이나 입력 등의 용도로 사용된다.
2. 기본 다이얼로그
- 총 3개의 버튼을 배치할 수 있다.
- 아이콘, 제목, 본문내용, 최대 버튼 3개
// 1. 버튼을 누르면 기본 다이얼로그가 뜨게
button4.setOnClickListener { view ->
var builder = AlertDialog.Builder(this)
// 아이콘
builder.setIcon(R.drawable.images)
// 제목
builder.setTitle("기본 다이얼로그")
// 본문 내용
builder.setMessage("본문 입니다")
//버튼을 눌렀을 때 이벤트를 발생시키기 위해서는 리스너를 붙여야한다.
var listner = object : DialogInterface.OnClickListener{
override fun onClick(dialog: DialogInterface?, which: Int) {
when(which)
{
BUTTON_POSITIVE ->
textView.text = "포지티브"
BUTTON_NEGATIVE ->
textView.text = "네거티브"
BUTTON_NEUTRAL ->
textView.text = "뉴트럴"
}
}
}
// 버튼 표기
builder.setPositiveButton("Positive", listner)
builder.setNeutralButton("Neutral", listner)
builder.setNegativeButton("Negative", listner)
builder.show()
}
3. 커스텀 다이얼로그
- 기본 다이얼로그에 View를 설정하면 다이얼로그에 표시되는 모양을 자유롭게 구성할 수 있다.
1. 커스텀 다이얼로그를 구성할 xml파일을 생성
2. 커스텀 다이얼로그의 builder에 그 뷰를 inflate해서 세팅해준다.
3. 리스너를 통해 다이얼로그 객체를 가져와서 원하는 메뉴를 설정.
커스텀 다이얼로그 버튼(button5)를 누르면 커스텀 다이럴로그가 뜨게하는 예제.
// 2. 커스텀 다이얼로그
button5.setOnClickListener { view ->
var builder = AlertDialog.Builder(this)
builder.setTitle("커스텀 다이얼로그")
builder.setIcon(R.drawable.images)
// 뷰를 세팅
var v1 = layoutInflater.inflate(R.layout.dialogue, null)
builder.setView(v1)
//리스너 세팅
//사용자가 누른 버튼이 가지고있는 다이얼로그 객체를 가져옴
var listner = object :DialogInterface.OnClickListener{
override fun onClick(dialog: DialogInterface?, which: Int) {
var alert = dialog as AlertDialog
var edit1:EditText? = alert.findViewById<EditText>(R.id.editText)
var edit2:EditText? = alert.findViewById<EditText>(R.id.editText2)
textView.text = "edit1 : ${edit1?.text} \n"
textView.append("edit1 : ${edit2?.text}")
}
}
builder.setNegativeButton("취소", null)
builder.setPositiveButton("확인", listner)
builder.show()
}
}
4. DatePicker
- 다이얼로그를 통해 날짜를 선택할 수 있도록 제공되는 다이얼로그.
// 3. 날짜 선택할 수 있는 다이얼로그
button6.setOnClickListener { view ->
// 캘린더 객체를 받아와서 년,월,일 정보를 가져온다.
var calander = Calendar.getInstance()
var year = calander.get(Calendar.YEAR)
var month = calander.get(Calendar.MONTH)
var day = calander.get(Calendar.DAY_OF_MONTH)
// 리스너를 통해 DatePicker가 받아온 년월일을 세팅한다.
var listner = object:DatePickerDialog.OnDateSetListener
{
override fun onDateSet(view: DatePicker?, year: Int, month: Int, dayOfMonth: Int) {
textView.text = "${year}년 ${month +1}월 ${dayOfMonth}일"
}
}
// 데이트 피커 다이얼로그를 show한다.
var picker = DatePickerDialog(this, listner, year, month, day)
picker.show()
}
5. TimePicker
- 다이얼로그를 통해 시간을 선택할 수 있도록 제공되는 다이얼로그
// 4. 시간을 선택하게 하는 다이얼로그
button7.setOnClickListener { view ->
var calendar = Calendar.getInstance()
var hour = calendar.get(Calendar.HOUR)
var minute = calendar.get(Calendar.MINUTE)
var listner = object:TimePickerDialog.OnTimeSetListener {
override fun onTimeSet(view: TimePicker?, hourOfDay: Int, minute: Int) {
textView.text = "${hourOfDay}시 ${minute}분"
}
}
var picker = TimePickerDialog(this, listner, hour, minute, true)
picker.show()
}
}
'Deperecated > Android_강의' 카테고리의 다른 글
안드로이드 - Pending Intent (0) | 2020.02.14 |
---|---|
안드로이드 - Notification (0) | 2020.02.14 |
안드로이드 - 메시징 - Toast (0) | 2020.02.13 |
안드로이드 - ActionBar (0) | 2020.02.13 |
안드로이드 - PopupMenu (0) | 2020.02.13 |