안드로이드 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() 메소드를 사용한다.
'Android' 카테고리의 다른 글
안드로이드 Button style 버튼 꾸미기 (0) | 2020.03.29 |
---|---|
안드로이드 SharedPreferences 옵션이나 간단한 데이터 저장하기 (0) | 2020.03.29 |
안드로이드 뷰페이저, 탭 레이아웃 구현 (2) (1) | 2020.02.13 |
안드로이드 뷰페이저, 탭 레이아웃 구현 (1) - 좌우로 밀어서 페이지 전환 (0) | 2020.02.12 |
안드로이드 스튜디오 adb를 이용한 스마트폰 원격 연결 (0) | 2020.01.21 |