selfstarter

How to make Simple CustomDialog in Android 본문

App/Android

How to make Simple CustomDialog in Android

selfstarter 2020. 6. 27. 17:15

How to make Simple CustomDialog in Android

custom dialog는 content, ok버튼, cancle 버튼으로 이루어져 있다
그리고 상황에 따라 알맞은 content를 보여줘야 한다.
(content에는 종료시엔 종료하시겠습니까?란 글자가 보이는 화면이 나오거나, 무언가를 선택해야 하면 checkbox가 있는 화면이 보여야 한다)
여러개의 view를 보여주는 방법은 custom dialog에 framelayout을 넣어서 보여주고 싶은 view를 addView 하면 된다.
구현은 아래와 같다

1. content view xml 만들기(dialog_calendar_view.xml)

<androidx.constraintlayout.widget.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    xmlns:app="http://schemas.android.com/apk/res-auto" >
    <!-- content 내용 -->
</androidx.constraintlayout.widget.ConstraintLayout>

2. custom dialog xml 만들기

<androidx.constraintlayout.widget.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    xmlns:app="http://schemas.android.com/apk/res-auto" >

    <FrameLayout
        android:id="@+id/dialog_calendar_frame_layout"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_weight="9"
        />
    <Button
        android:id="@+id/ok_btn"
        android:layout_width="0dp"
        android:layout_height="50dp"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintEnd_toStartOf="@id/cancle_btn"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintVertical_weight="1"
        android:text="@string/ok"
        android:textSize="20dp" />
    <Button
        android:id="@+id/cancle_btn"
        android:layout_width="0dp"
        android:layout_height="50dp"
        app:layout_constraintStart_toEndOf="@id/ok_btn"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintVertical_weight="1"
        android:text="@string/cancel"
        android:textSize="20dp" />
</androidx.constraintlayout.widget.ConstraintLayout>

3. custom view xml과 연동되는 custom view class 만들기

4. custom view class 에서 inflate로 view 실체화 하기

view = layoutInflater.inflate(R.layout.dialog_calendar_view, null);

5. 실체화한 view를 frameLayout에 넣어서 화면에 보여주기

기본적으로 frameLayout에 있는 view는 한개로, 만약 view를 변경하고 싶다면 0번째 view를 삭제 후(무조건 1개이므로 0번째 index view만 존재한다) 보여줄 view를 addView 하면 된다

frameLayout.addView(calendarView.getView());
Comments