→ 위치 커스텀
class PermissionDialog(
context: Context,
private val description: String,
private val confirmBtnClickListener: () -> Unit,
private val refuseBtnClickListener: () -> Unit
) : Dialog(context) {
private lateinit var binding: DialogPermissionBinding
override fun onCreate(savedInstanceState: Bundle?) {
...
initView()
}
private fun initView() = with(binding) {
...
window?.attributes?.y = 200
...
}
}
<?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="wrap_content"
android:layout_marginHorizontal="34dp"
android:background="@drawable/rect_whitefill_nostroke_30radius">
<TextView
android:id="@+id/tv_announce"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingTop="50dp"
android:text="기기의 네트워크 상태를 확인해 주세요."
android:textColor="@color/black"
android:textSize="16sp"
android:textStyle="bold"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<com.google.android.material.divider.MaterialDivider
android:id="@+id/divider"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="40dp"
android:background="#E9EBEE"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tv_announce" />
<TextView
android:id="@+id/tv_retry"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:paddingBottom="20dp"
android:text="재시도"
android:textColor="@color/black"
android:textSize="14sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/divider" />
</androidx.constraintlayout.widget.ConstraintLayout>
class AnnounceDialog(
context: Context,
private val text: String,
private val btnClickListener: () -> Unit
): Dialog(context){
private lateinit var binding: DialogAnnounceBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = DialogAnnounceBinding.inflate(layoutInflater)
setContentView(binding.root)
initView()
}
private fun initView() = with(binding) {
window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
tvAnnounce.text = text
tvRetry.setOnClickListener {
btnClickListener()
}
}
}
private lateinit var announceDialog : AnnounceDialog
fun showAnnounce(
text: String,
btnClickListener: () -> Unit
) {
announceDialog = AnnounceDialog(this,text,btnClickListener)
announceDialog.show()
}
fun dismissAnnounce(){
announceDialog.dismiss()
}