BÀI 89 - THIẾT KẾ DIALOG XÁC NHẬN TRONG ANDROID

  • Mình sẽ thiết kế một cái Dialog giống mẫu trên nhe !

  • Đầu tiên, tạo một Layout như này... Bạn tự kiếm hình cho ImageView nhé

<?xml version="1.0" encoding="utf-8"?>

<FrameLayout

xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:app="http://schemas.android.com/apk/res-auto"

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="250dp"

android:layout_gravity="center"

android:gravity="center">


<LinearLayout

android:layout_width="match_parent"

android:layout_height="match_parent"

android:layout_gravity="center_vertical"

android:gravity="center_vertical"

android:orientation="vertical">


<androidx.cardview.widget.CardView

android:layout_width="match_parent"

android:layout_height="165dp"

android:layout_gravity="center"

app:cardCornerRadius="8dp"

app:cardElevation="15dp">


<TextView

android:id="@+id/textview_dialogConfirmNotification_title"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_gravity="center_horizontal"

android:layout_marginTop="14dp"

android:gravity="center"

android:hint="Tiêu đề"

android:textColor="@android:color/black"

android:textSize="20dp"

android:textStyle="bold"

tools:ignore="HardcodedText,SpUsage" />


<TextView

android:id="@+id/textview_dialogConfirmNotification_message"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_gravity="center"

android:layout_marginEnd="20dp"

android:layout_marginStart="20dp"

android:gravity="center"

android:hint="Nội dung thông báo"

android:textSize="14dp"

android:textStyle="bold"

tools:ignore="HardcodedText,SpUsage" />


</androidx.cardview.widget.CardView>

</LinearLayout>


<ImageView

android:id="@+id/imageView_dialogConfirmNotification_cancel"

android:src="@drawable/icon_cancel"

android:layout_gravity="center"

android:layout_marginEnd="45dp"

android:layout_marginTop="75dp"

android:layout_width="60dp"

android:layout_height="60dp"

tools:ignore="ContentDescription" />


<ImageView

android:id="@+id/imageView_dialogConfirmNotification_ok"

android:src="@drawable/icon_ok"

android:layout_gravity="center"

android:layout_marginStart="50dp"

android:layout_marginTop="75dp"

android:layout_width="60dp"

android:layout_height="60dp"

tools:ignore="ContentDescription" />

</FrameLayout>

  • Tạo một cái Class như này

public class DialogNotificationConfirm {

public void ShowDialog(Activity activity, String title, String message, int action) {

Dialog dialog = new Dialog(activity);

dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);

dialog.setCancelable(false);

dialog.setContentView(R.layout.dialog_notification_confirm);

dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));

TextView tvTitle = dialog.findViewById(R.id.textview_dialogConfirmNotification_title);

TextView tvMessage = dialog.findViewById(R.id.textview_dialogConfirmNotification_message);

ImageView imgCancel = dialog.findViewById(R.id.imageView_dialogConfirmNotification_cancel);

ImageView imgOK = dialog.findViewById(R.id.imageView_dialogConfirmNotification_ok);

if (title.equals(null)) {

tvTitle.setVisibility(View.GONE);

} else {

tvTitle.setText(title);

}

if (message.equals(null)) {

tvMessage.setVisibility(View.GONE);

} else {

tvMessage.setText(message);

}

imgOK.setOnClickListener(view -> {

if (action == 1) {

Action_1_ExitApplication(activity);

}

});

imgCancel.setOnClickListener(view -> dialog.cancel());

dialog.show();

}

private void Action_1_ExitApplication(Activity activity) {

activity.finish();

}

}

  • Để sử dụng thì gọi nó ra như này !

@Override

public void onBackPressed() {

DialogNotificationConfirm confirm = new DialogNotificationConfirm();

confirm.ShowDialog(this, "Khoan... dừng khoảng chừng 2s", "Có phải bạn muốn thoát ứng dụng không ?", 1);

}