반응형
최대한 쉽고 간단하게 설명해 보도록 하겠습니다
우선 앞서 저는 databinding을 사용하였습니다
Dialog xml 생성
다이어로그로 표시해줄 xml을 생성합니다
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<data>
</data>
<RelativeLayout
android:layout_width="match_parent"
android:background="@color/white"
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingTop="20dp">
<TextView
android:id="@+id/text_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:textAlignment="center"
android:textColor="#000000"
android:textSize="24sp"
tools:text="커스텀 다이얼로그" />
<TextView
android:id="@+id/text_description"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="40dp"
android:textAlignment="center"
android:paddingHorizontal="10dp"
android:textColor="#000000"
android:textSize="16sp"
tools:text="정말 쉬워요!" />
<androidx.appcompat.widget.AppCompatButton
android:id="@+id/btn_positive"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="#000000"
android:textColor="@android:color/white"
android:textStyle="bold"
tools:text="확인" />
</LinearLayout>
</RelativeLayout>
</layout>
xml을 생성하셨다면 다음 단계로 넘어갑니다
Dialog.kt 생성
다이얼로그 코틀린 파일을 생성합니다. MainActivity가 아닙니다!
class CategoryDialog : DialogFragment() {
private var _binding: CategoryDescriptionDialogBinding? = null
private val binding get() = _binding!!
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
_binding = CategoryDescriptionDialogBinding.inflate(inflater, container, false)
val view = binding.root
binding.textTitle.text = "카테고리"
binding.btnPositive.text = "확인"
binding.textDescription.text = "넌센스 : 넌센스 문제가 출제 됩니다\n 학교 : 학교 관련 문제가 출제 됩니다\n 상식 : 상식문제가 출제 됩니다"
binding.btnPositive.setOnClickListener {
dismiss()
}
return view
}
override fun onDestroyView() {
super.onDestroyView()
_binding = null
}
}
저는 저의 프로젝트에 맞게 생성하였습니다. 여러분도 원하시는 이름으로 생성하시면 됩니다
binding으로 text를 넣어줍니다. binding으로 text를 설정해주지 않으면 기본적으로 텍스트가 보이지 않습니다!
dismiss()는 버튼을 눌렀을시 다이어로그를 사라지게 한다는 의미입니다
MainActivity에서 사용
이제 2단계를 모두 거쳤다면 마지막으로 MainActivity에서 사용하시면 됩니다
binding.categoryBtn.setOnClickListener {
val dialog = CategoryDialog()
dialog.show(supportFragmentManager, "다이얼로그")
}
저는 버튼을 눌렀을때 나오는걸로 코드를 짜봤습니다.
val dialog = CategoryDialog() 이거는 저가 클래스 이름을 CategoryDialog로 했기 때문에 CategoryDialog클래스의 객체를 생성해 dialog에 저장해줬습니다
눌러보시면 정상 작동하시는걸 확인하실수 있습니다
반응형
'Android' 카테고리의 다른 글
Fragment에서 Activity로 이동할때 전환 애니메이션 변경하기 (0) | 2021.06.23 |
---|---|
바텀네비게이션의 아이템 위치 변경 (0) | 2021.06.23 |
Scrollview, RecyclerView 의 음영표시 삭제 (0) | 2021.06.12 |
Databinding으로 바꾼후 나는 cannot find symbol 에러 (0) | 2021.06.12 |
위, 아래 스크롤을 감지하는 setOnScrollChangeListener (0) | 2021.06.11 |