준코딩

커스텀 팝업 생성하기 / CustomDialog 본문

프로그래밍/Android(JAVA)

커스텀 팝업 생성하기 / CustomDialog

Ljunhyeob - App Dev 2023. 6. 26. 15:49

결과 이미지

 

 

 

1. CustomOneDialog   Class 파일을 생성해주세요.

package com.example.android.me;

import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.TextView;

import androidx.fragment.app.DialogFragment;

public class CustomOneDialog extends DialogFragment {

    private String title;
    private String description;
    private String positiveBtnText;
    private CustomOneDialogListener listener;

    public CustomOneDialog() {}

    public void setTitle(String title) {
        this.title = title;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public void setPositiveBtnText(String text) {
        this.positiveBtnText = text;
    }

    public void setBtnClickListener(CustomOneDialogListener listener) {
        this.listener = listener;
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        super.onCreateView(inflater, container, savedInstanceState);
        View view = inflater.inflate(R.layout.dialog_one_custom, container, false);
        setCancelable(false);
        return view;
    }

    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);

        View view = getView();
        if (view != null) {
            TextView titleTextView = view.findViewById(R.id.text_title);
            titleTextView.setText(title);

            TextView descriptionTextView = view.findViewById(R.id.text_description);
            descriptionTextView.setText(description);

            Button positiveButton = view.findViewById(R.id.btn_positive);
            positiveButton.setText(positiveBtnText);
            positiveButton.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    dismiss();
                    if (listener != null) {
                        listener.onClickPositiveBtn();
                    }
                }
            });
        }
    }

    public interface CustomOneDialogListener {
        void onClickPositiveBtn();
    }

    public static class CustomOneDialogBuilder {

        private CustomOneDialog dialog = new CustomOneDialog();

        public CustomOneDialogBuilder setTitle(String title) {
            dialog.setTitle(title);
            return this;
        }

        public CustomOneDialogBuilder setDescription(String description) {
            dialog.setDescription(description);
            return this;
        }

        public CustomOneDialogBuilder setPositiveBtnText(String text) {
            dialog.setPositiveBtnText(text);
            return this;
        }


        public CustomOneDialogBuilder setBtnClickListener(CustomOneDialogListener listener) {
            dialog.setBtnClickListener(listener);
            return this;
        }

        public CustomOneDialog create() {
            return dialog;
        }
    }
}

 

2. dialog_one_custom.xml 파일을 생성해주세요. (저는 폰트를 따로 다운받아서 사용했습니다. 따로 폰트가 없으신 분은 fontFamily 코드 지우고 하시면 됩니다.)

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    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"
            android:fontFamily="@font/jalnan"
            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"
            android:fontFamily="@font/omyupretty"
            tools:text="설명" />

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal">

            <Button
                android:id="@+id/btn_positive"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:background="#B266FF"
                android:textColor="@android:color/white"
                android:textStyle="bold"
                tools:text="확인" />

        </LinearLayout>

    </LinearLayout>

</RelativeLayout>

 

 

3. 사용 하실때  아래처럼 생성하여서 사용하시면 됩니다!

CustomOneDialog.CustomOneDialogBuilder builder = new CustomOneDialog.CustomOneDialogBuilder();
             builder.setTitle("알림")
                     .setDescription("네트워크 연결 상태를 확인해주세요.")
                     .setPositiveBtnText("확인")
                     .setBtnClickListener(new CustomOneDialog.CustomOneDialogListener() {
                         @Override
                         public void onClickPositiveBtn() {
                             if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
                                 finishAndRemoveTask();
                             }
                         }
                     });
             CustomOneDialog dialog = builder.create();
             dialog.show(getSupportFragmentManager(), "custom_one_dialog");
Comments