Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 원스휴먼 쿠폰
- 홈플러스 시그니처 모카골드믹스커피
- 계엄령 외신반응
- 일론머스크
- 2차 비상계엄
- 원스휴먼 황금양털파밍
- 국방부
- 커피추천
- 믹스커피추천
- 믹스커피
- 원스휴먼 먹이
- 유광버섯 통조림
- 홈플러스
- 원스휴먼 황금양
- 2차계엄
- 원스휴먼 동물
- 1203계엄령
- 원스휴먼 레시피 파밍
- 윤석열
- 시그니처
- 원스휴먼 레시피
- 비상계엄령
- 원스휴먼 황금양 구하기
- 원달러환율
- 원스휴먼 스타크롬
- 원스휴먼 사료
- 계엄령
- 원스휴먼 요리
- 레시피 파밍
Archives
- Today
- Total
0101011001010111
kotlin_Custom Dialog 본문
728x90
반응형
customDialog는 말 그대로,
다이얼 로그를 custom 하는 거다. ( 원하는대로 꾸미기)
일단, 커스텀 다이얼로그를 하려면 xml 파일을 하나 추가해야한다.
이름과, 나이를 edittext로 넣는 다이얼로그를 만들어보자.
customdialog.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="16dp">
<EditText
android:id="@+id/edit_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Name"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:ignore="TouchTargetSizeCheck"/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Age"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/edit_name"
tools:ignore="TouchTargetSizeCheck" />
</androidx.constraintlayout.widget.ConstraintLayout>
package com.example.dialog
import android.content.DialogInterface
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.EditText
import androidx.appcompat.app.AlertDialog
import com.example.dialog.databinding.ActivityMainBinding
class MainActivity : AppCompatActivity() {
// 바인딩 객체 선언
private lateinit var binding: ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// 바인딩 객체 초기화
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
//1.기본 다이얼로그
binding.DIALOG.setOnClickListener {
var builder = AlertDialog.Builder(this)
builder.setTitle("기본 다이얼로그 타이틀")
builder.setMessage("기본 다이얼로그 메세지")
builder.setIcon(R.mipmap.ic_launcher)
//버튼 클릭 시, 어떤 작업을 할 것인가?
val listener = object : DialogInterface.OnClickListener {
override fun onClick(p0: DialogInterface?, p1: Int) {
when (p1) {
DialogInterface.BUTTON_POSITIVE ->
binding.textView.text = "BUTTON_POSITIVE"
DialogInterface.BUTTON_NEUTRAL ->
binding.textView.text = "BUTTON_NEUTRAL"
DialogInterface.BUTTON_NEGATIVE ->
binding.textView.text = "BUTTON_NEGATIVE"
}
}
}
builder.setPositiveButton("Positive", listener)
builder.setNegativeButton("Negative", listener)
builder.setNeutralButton("Neutral", listener)
builder.show()
}
//2.커스텀 다이얼로그
binding.CUSTOMDIALOG.setOnClickListener {
val builder = AlertDialog.Builder(this)
builder.setTitle("커스텀 다이얼로그")
builder.setIcon(R.mipmap.ic_launcher)
val v1 = layoutInflater.inflate(R.layout.customdialog, null)
builder.setView(v1)
//p0에 해당 AlertDialog가 들어온다 FindViewById를 통해 view를 가져와서 사용. (근데 뷰바인딩이 있는데 굳이 ? )
val listener = DialogInterface.OnClickListener { p0, p1 ->
val alert = p0 as AlertDialog
val edit1: EditText? = alert.findViewById<EditText>(R.id.edit_name)
val edit2: EditText? = alert.findViewById<EditText>(R.id.edit_age)
binding.textView.text = "이름 : ${edit1?.text}"
binding.textView.append("/ 나이 : ${edit2?.text}")
}
builder.setPositiveButton("확인", listener)
builder.setNegativeButton("취소", null)
builder.show()
}
}
}
binding.textView.text = "이름 : ${edit1?.text}"
binding.textView.append("/ 나이 : ${edit2?.text}")
이 .append는 이름이 써지는 것 뒤에 들어가라는 얘기다.
그래서 이름 : ㅁㄴㅇㄹ 나이 23쓰면,
이렇게 텍스트에 표시되게 된다. (왜냐면 .textview에 쓰는 것 이므로)
그리고 이 취소, 확인은,
builder.setPositiveButton("확인", listener)
builder.setNegativeButton("취소", null)
builder.show()
이 부분이다.
또,
val listener = DialogInterface.OnClickListener { p0, p1 ->
val alert = p0 as AlertDialog
val edit1: EditText? = alert.findViewById<EditText>(R.id.edit_name)
val edit2: EditText? = alert.findViewById<EditText>(R.id.edit_age)
이 부분이다.
728x90
반응형
'Kotlin > 안드로이드_[숙련]앱개발' 카테고리의 다른 글
Kotlin_Time Picker Dialog_시간 다이얼로그 (0) | 2023.09.18 |
---|---|
kotlin_DatePickerDialog (0) | 2023.09.18 |
kotlin_Dialog (0) | 2023.09.14 |
1-4 프래그먼트Fragment (0) | 2023.08.28 |
1-3 RecyclerView (1) | 2023.08.27 |