이놈의 다이얼로그 생각 보다 정말 많이 쓰이는데..

그냥 기본 설정으로 쓰는 곳이 단 하나도 없다는게...

그래서 어플을 만들때 다이얼로그는 커스텀해서 사용하는 경우가 아마 대부분일거다.

 

그래서 커스텀 다이얼로그를 공부하다가 가장 간단한 방법으로 사용할 수 있는 방법을 포스팅해보려고한다.

다음과 같은 순서로 진행한다.

 

* 커스텀 다이얼로그 만들기

1. 다이얼로그 디자인 -> xml

2. 메인 xml에서 다이얼로그가 나올 수 있는 버튼 만들기

3. 메인 java에서 버튼 클릭 이벤트로 다이얼로그 띄우기

 

간단히 설명하자면 개념은 이러하다.

일반적으로 다이얼로그는 기본 셋팅에 있는대로 속성을 줘서 바로 클릭 이벤트와 같은 곳에 띄우도록 한다.

그런데 커스텀 다이얼로그는 일단 커스텀이기 때문에 보여질 화면을 작업해야하고, 화면을 가지고서 다이얼로그를 띄울 수 있도록 클릭 이벤트에 설정해줘서 띄우도록 해야한다.

그럼 만들어보쟈

 

 

1. 다이얼로그 화면 디자인

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <LinearLayout
        android:gravity="center"
        android:orientation="vertical"
        android:layout_marginVertical="50sp"
        android:layout_marginHorizontal="55sp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <TextView
            android:text="삭제하시겠습니까?"
            android:textSize="23sp"
            android:gravity="center"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>

        <LinearLayout
            android:orientation="horizontal"
            android:layout_marginTop="40sp"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
            <Button
                android:id="@+id/deleteBtn"
                android:text="삭제"
                android:textSize="18sp"
                android:textColor="@color/colorRed"
                android:background="@color/colorNothing"
                android:layout_weight="1"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"/>
            <Button
                android:id="@+id/cancelBtn"
                android:text="취소"
                android:textSize="18sp"
                android:textColor="@color/colorAccent"
                android:background="@color/colorNothing"
                android:layout_weight="1"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"/>
        </LinearLayout>
    </LinearLayout>

</LinearLayout>

 

2. 메인 화면 디자인

<RelativeLayout
        android:layout_alignParentTop="true"
        android:background="@color/colorGray"
        android:layout_width="match_parent"
        android:layout_height="85sp">
        <ImageView
            android:id="@+id/deleteDataBtn"
            android:src="@drawable/ic_cancel"
            android:layout_alignParentRight="true"
            android:layout_marginRight="20sp"
            android:layout_width="25sp"
            android:layout_height="wrap_content"/>
    </RelativeLayout>

 

3. 메인 자바 코딩

public class CustomDialogEx extends AppCompatActivity {

    ImageView deleteDataBtn;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_service_custom_modify);

        // 사용할 액티비티 선언
        deleteDataBtn= findViewById(R.id.deleteDataBtn);

        // 삭제하기 버튼 -> 커스텀 다이얼로그 생성
        deleteDataBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                DleteAlertDialog();
            }
        });


    }

    private void DleteAlertDialog() {
        LayoutInflater dialog = LayoutInflater.from(this);
        final View deleteDialogLayout = dialog.inflate(R.layout.dialog_delete, null);
        final Dialog deleteDialog = new Dialog(this);

        deleteDialog.setContentView(deleteDialogLayout);
        deleteDialog.show();

        Button deleteBtn = (Button) deleteDialogLayout.findViewById(R.id.deleteBtn);
        Button cancelBtn = (Button) deleteDialogLayout.findViewById(R.id.cancelBtn);

        deleteBtn.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View v)
            {
                // 삭제 버튼 누르면 할거
                Toast.makeText(getApplicationContext(), "버튼을 누를시 데이터를 삭제합니다.", Toast.LENGTH_LONG).show();
            }
        });

        cancelBtn.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View v)
            {
            	// 취소 버튼 누르면 할거
                //deleteDialog.cancel();
                //deleteDialog.dismiss();
                Toast.makeText(getApplicationContext(), "취소합니다.", Toast.LENGTH_LONG).show();
            }
        });
    }

}

 

 

위와 같이 하면 된다.

지금 내가 작업중인 파일이라서 클래스명을 좀 바꾸고 필요없는건 빼서

그대로 복붙해서 실행될지는 모르겠지만, 이와 같은 방법으로 진행하면 된다.

 

+ Recent posts