Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Android

Cách tạo AlertDialog tùy chỉnh trong Android

Giới thiệu

Ví dụ này minh họa cách tạo AlertDialog tùy chỉnh (custom) với layout riêng trong Android.

Các bước thực hiện

Bước 1: Tạo dự án mới

Mở Android Studio, chọn File → New Project và điền thông tin cần thiết.

Bước 2: Thiết kế giao diện chính (res/layout/activity_main.xml)

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
    xmlns:tools="https://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="MainActivity">

    <TextView
        android:id="@+id/textView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_above="@+id/buttonShowCustomDialog"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="86dp"
        android:gravity="center"
        android:text="NHẤN ĐỂ XEM CUSTOM ALERT DIALOG"
        android:textSize="18sp"
        android:textStyle="bold" />

    <Button
        android:id="@+id/buttonShowCustomDialog"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="131dp"
        android:onClick="showDialog"
        android:text="Mở Dialog"
        android:textStyle="bold"
        style="@android:style/Widget.DeviceDefault.Button.Inset" />

</RelativeLayout>

Bước 3: Tạo layout custom dialog (res/layout/custom_dialog.xml)

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
    xmlns:app="https://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:padding="16dp">

    <TextView
        android:id="@+id/text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="16dp"
        android:text="Cảnh báo!"
        android:textSize="18sp"
        android:textStyle="bold" />

    <ImageView
        android:id="@+id/image"
        android:layout_width="60dp"
        android:layout_height="60dp"
        android:layout_below="@+id/text"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="16dp"
        app:srcCompat="@drawable/ic_warning" />

    <Button
        android:id="@+id/dialogButtonOK"
        android:layout_width="200dp"
        android:layout_height="wrap_content"
        android:layout_below="@+id/image"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="24dp"
        android:layout_marginBottom="16dp"
        android:paddingRight="5dp"
        android:text="Đóng"
        android:textSize="18sp"
        style="@style/Widget.AppCompat.Button.Colored" />

</RelativeLayout>

Bước 4: Viết code MainActivity.java

import android.app.Dialog;
import android.content.Context;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {
    private Button button;

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

        button = findViewById(R.id.buttonShowCustomDialog);
        button.setOnClickListener(v -> showCustomDialog());
    }

    private void showCustomDialog() {
        final Dialog dialog = new Dialog(this);
        dialog.setContentView(R.layout.custom_dialog);
        dialog.setCancelable(true);

        Button dialogButton = dialog.findViewById(R.id.dialogButtonOK);
        dialogButton.setOnClickListener(v -> {
            dialog.dismiss();
            Toast.makeText(this, "Đã đóng dialog", Toast.LENGTH_SHORT).show();
        });

        dialog.show();
    }
}

Cách dùng AlertDialog.Builder (khuyên dùng):

AlertDialog.Builder builder = new AlertDialog.Builder(this);
View dialogView = getLayoutInflater().inflate(R.layout.custom_dialog, null);
builder.setView(dialogView);

AlertDialog dialog = builder.create();
dialog.show();

Bước 5: Cấu hình AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
    package="app.com.sample">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">

        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

    </application>
</manifest>

Chạy ứng dụng

Kết nối thiết bị, nhấn Run. Nhấn nút "Mở Dialog" để xem custom AlertDialog.

Cách tạo AlertDialog tùy chỉnh trong Android

Cách tạo AlertDialog tùy chỉnh trong Android

Cách tạo AlertDialog tùy chỉnh trong Android