320x100
이번엔 dialog 디자인이 정해져 있고,
개발자가 원하는 view 를 가지고 만들어야 하는
상황 발생할 때 쓰면 될 것 같다
지금 코드에서는 activity 에서 합쳐서 작업했지만
여러 군데에서 사용하고 쓰이게 될 경우
class로 분리해서 사용하면 된다
더불어 다이어로그를 커스텀 하게 된다면
Theme를 잊는데,
해당 Theme에 따라 결과도 크게 달라지니
해당 코드 테마 뿐만 아니라
여러테마를 확인하는 것도 괜찮은 듯 싶다
특히 dialog 내부 view를 match_parent로 적용이 안될 시
Theme를 반드시 확인해야 한다
코드 1 : MainActivity.kt
테마의 경우 android.R.style.Theme_Translucent_NoTitleBar_Fullscreen 로 지정했는데
만약 해당 테마를 지정하지 않고 사용한다면,
view의 match_parent 가 정상적으로 작동하지 않는다
그러니 dialog 내부 view의 크기를 match_parent로 적용해도
적용이 안되었을 경우
Theme를 아래와 같이 수정 후 확인하면 될 것 같다
class MainActivity : AppCompatActivity() {
private lateinit var dialog: Dialog
private lateinit var bShow: Button
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
bShow = findViewById(R.id.button)
bShow.setOnClickListener { dialog.show() }
// dialog 초기화
initDialog(this)
}
private fun initDialog(context: Context) {
// context 뿐만 아니라 테마도 반드시 지정할 것
dialog = Dialog(
context,
android.R.style.Theme_Translucent_NoTitleBar_Fullscreen)
// 개발자가 지정할 view xml 파일
dialog.setContentView(R.layout.dialog_msg_alert)
// 확인 버튼 이벤트 작성
dialog.findViewById<Button>(R.id.b_check).setOnClickListener {
dialog.dismiss()
}
}
}
코드 2 : activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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="match_parent"
android:orientation="vertical"
tools:context=".MainActivity" >
<Button
android:id="@+id/button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="show" />
</LinearLayout>
코드 3 : dialog_msg_alert.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"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#80333333"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="20dp"
android:layout_marginEnd="20dp"
android:background="#FFFFFF"
android:orientation="vertical"
android:paddingLeft="20dp"
android:paddingTop="10dp"
android:paddingRight="20dp"
android:paddingBottom="10dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/tv_head"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="경고"
android:textAppearance="@style/TextAppearance.AppCompat.Large"
android:textColor="#272727"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingTop="10dp"
android:paddingBottom="10dp">
<TextView
android:id="@+id/tv_body"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="로딩 중 입니다\n잠시만 기다려 주세요"
android:textColor="#8C8C8C" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<Button
android:id="@+id/b_check"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="확인" />
</LinearLayout>
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
320x100
'Android > Kotlin' 카테고리의 다른 글
[Android][Kotlin] 캘린더(CalendarView) 생성, 오늘 날짜, 클릭 이벤트 (0) | 2022.10.12 |
---|---|
[Android][Kotlin] Thread 상속 받고 Thread 일시정지 (0) | 2022.10.07 |
[Android][Kotlin] 특정 시간 뒤 작업 Handler postDelayed (0) | 2022.10.04 |
[Android][Kotlin] AlertDialog (2) | 2022.10.04 |
[Android][Kotlin] 특정 View를 Bitmap으로 변환 후 이미지로 저장하는 방법 (0) | 2022.09.23 |