안드로이드 dialog, custom dialog 다이얼로그





결과

초기 화면

다이얼로그

커스텀 다이얼로그






Main Layout 코드

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

    <Button
        android:id="@+id/button3"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="30dp"
        android:background="@drawable/text_style"
        android:onClick="dialog"
        android:text="다이얼로그"
        android:textSize="24sp" />

    <Button
        android:id="@+id/button4"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/text_style"
        android:onClick="custom_dialog"
        android:text="커스텀 다이얼로그"
        android:textSize="24sp" />
</LinearLayout>






Custom Dialog Layout


파일 생성

ㄴ 커스텀 dialog의 보여줄 layout을 만들어주기 위하여 파일을 하나 생성한다.




만든 다이얼로그 레이아웃


 



Custom Dialog Layout 코드

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

    <TextView
        android:id="@+id/textView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/text_style"
        android:gravity="center"
        android:text="- 확 인 -"
        android:textSize="30sp"
        android:textStyle="bold" />

    <TextView
        android:id="@+id/textView2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@android:color/holo_blue_light"
        android:gravity="center"
        android:paddingTop="15dp"
        android:paddingBottom="15dp"
        android:text="결제하시겠습니까?"
        android:textSize="30sp" />

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

        <Button
            android:id="@+id/ok_btn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:background="@drawable/btn_empty"
            android:text="확 인"
            android:textSize="18sp" />

        <Button
            android:id="@+id/cancle_btn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:background="@drawable/btn_empty"
            android:text="취 소"
            android:textSize="18sp" />
    </LinearLayout>
</LinearLayout>







Main Java 코드

package com.example.testapp;

import androidx.appcompat.app.AppCompatActivity;

import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

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

    public void dialog(View v) {
        AlertDialog.Builder builder = new AlertDialog.Builder(v.getContext());
        builder.setTitle("알림창");
        builder.setMessage("전달할 메세지");
        builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                Toast.makeText(getApplicationContext(), "OK 버튼을 눌렀습니다.", Toast.LENGTH_LONG).show();
            }
        });
        builder.setNegativeButton("Cancle", null);
        builder.show();
    }

    public void custom_dialog(View v) {
        View dialogView = getLayoutInflater().inflate(R.layout.custom_dl, null);

        AlertDialog.Builder builder = new AlertDialog.Builder(v.getContext());
        builder.setView(dialogView);

        final AlertDialog alertDialog = builder.create();
        alertDialog.show();

        Button ok_btn = dialogView.findViewById(R.id.ok_btn);
        ok_btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(getApplicationContext(), "OK 버튼을 눌렀습니다.", Toast.LENGTH_LONG).show();
                alertDialog.dismiss();
            }
        });

        Button cancle_btn = dialogView.findViewById(R.id.cancle_btn);
        cancle_btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                alertDialog.dismiss();
            }
        });
    }

}



- 일반적으로 다이얼로그를 만들어 줄 때는 AlertDialog.Builder 객체를 생성하여 사용한다.


- setTitle(), setMessage()의 메소드로 제목, 내용을 설정한다.


- setPositiveButton() 메소드를 사용하여서 텍스트 지정과 동작을 구현할 수 있다.


- 마찬가지로 setNegativeButton() 메소드를 이용하여 취소 기능을 만들 수도 있다.


- 마지막으로 show()해주어 만든 다이얼로그를 보여주어야 한다.




- 커스텀 다이얼로그를 만들어 줄 때는

View dialogView = getLayoutInflater().inflate(R.layout.custom_dl, null);

로 만든 레이아웃을 지정한후 이를 builder의 setView()메소드로 설정한다.


- 버튼 등 접근할 때도 dialogView를 통하여 접근한 후 기능을 구현하면 된다.


- 다이얼로그를 종료할 때는 dismiss() 메소드를 사용한다.






+ Recent posts