云计算百科
云计算领域专业知识百科平台

Android 对话框 - 自定义对话框(使用 AlertDialog.Builder、使用 Dialog)

创建自定义对话框

1、使用 AlertDialog.Builder
  • AlertDialog.Builder 是 AlertDialog 的辅助构建类

  • AlertDialog.Builder 提供了一系列便捷方法,例如,setTitle、setMessage、setIcon 等方法

  • AlertDialog.Builder 内置了对按钮的支持(positive、negative、neutral)

  • 2、使用 Dialog
  • Dialog 是基础对话框类

  • Dialog 需要完全自定义所有内容和行为,不提供任何预设方法或样式

  • Dialog 灵活性更高但需要更多代码


  • 一 – 1、使用 AlertDialog.Builder 创建带有两个按钮的自定义对话框

    1、基本介绍
    -说明
    元素 标题消息确定按钮取消按钮
    特性 对话框不可取消两个按钮都有点击事件处理,点击后显示 Toast 并关闭对话框
    2、演示
    (1)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:gravity="center"
    android:orientation="vertical"
    android:paddingStart="20dp"
    android:paddingTop="40dp"
    android:paddingEnd="20dp"
    android:paddingBottom="40dp">

    <TextView
    android:id="@+id/tv_title"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:text="title"
    android:textSize="25dp" />

    <TextView
    android:id="@+id/tv_message"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="20dp"
    android:gravity="center"
    android:text="message"
    android:textSize="20dp" />

    <LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="20dp">

    <android.widget.Button
    android:id="@+id/btn_confirm"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_marginRight="5dp"
    android:layout_weight="1"
    android:text="confirm"
    android:textColor="@color/black" />

    <android.widget.Button
    android:id="@+id/btn_cancel"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_marginLeft="5dp"
    android:layout_weight="1"
    android:text="cancel"
    android:textColor="@color/black" />

    </LinearLayout>
    </LinearLayout>

    (2)Code

    AlertDialog.Builder builder = new AlertDialog.Builder(this);

    View view = View.inflate(this, R.layout.custom_dialog1, null);
    builder.setView(view);
    builder.setCancelable(false);

    AlertDialog alertDialog = builder.create();

    TextView tvTitle = view.findViewById(R.id.tv_title);
    TextView tvMessage = view.findViewById(R.id.tv_message);
    Button btnConfirm = view.findViewById(R.id.btn_confirm);
    Button btnCancel = view.findViewById(R.id.btn_cancel);

    tvTitle.setText("这是标题");
    tvMessage.setText("这是消息");
    btnConfirm.setText("确定");
    btnCancel.setText("取消");

    btnConfirm.setOnClickListener(v -> {
    Toast.makeText(this, "点击了确定", Toast.LENGTH_SHORT).show();
    alertDialog.dismiss();
    });

    btnCancel.setOnClickListener((v) -> {
    Toast.makeText(this, "点击了取消", Toast.LENGTH_SHORT).show();
    alertDialog.dismiss();
    });

    alertDialog.show();

    3、解读
  • 创建 AlertDialog.Builder 对象
  • AlertDialog.Builder builder = new AlertDialog.Builder(this);

  • 加载自定义布局
  • View view = View.inflate(this, R.layout.custom_dialog1, null);
    builder.setView(view);

  • 设置对话框不可取消
  • builder.setCancelable(false);

  • 创建 AlertDialog 对象
  • AlertDialog alertDialog = builder.create();

  • 获取布局中的控件
  • TextView tvTitle = view.findViewById(R.id.tv_title);
    TextView tvMessage = view.findViewById(R.id.tv_message);
    Button btnConfirm = view.findViewById(R.id.btn_confirm);
    Button btnCancel = view.findViewById(R.id.btn_cancel);

  • 设置控件文本
  • tvTitle.setText("这是标题");
    tvMessage.setText("这是消息");
    btnConfirm.setText("确定");
    btnCancel.setText("取消");

  • 设置按钮点击事件
  • btnConfirm.setOnClickListener(v -> {
    Toast.makeText(this, "点击了确定", Toast.LENGTH_SHORT).show();
    alertDialog.dismiss();
    });

    btnCancel.setOnClickListener((v) -> {
    Toast.makeText(this, "点击了取消", Toast.LENGTH_SHORT).show();
    alertDialog.dismiss();
    });

  • 显示对话框
  • alertDialog.show();


    一 – 2、使用 AlertDialog.Builder 创建带有一个按钮的自定义对话框

    1、基本介绍
    -说明
    元素 标题消息确定按钮
    特性 对话框不可取消按钮有点击事件处理,点击后显示 Toast 并关闭对话框
    2、演示
    (1)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:gravity="center"
    android:orientation="vertical"
    android:paddingStart="20dp"
    android:paddingTop="40dp"
    android:paddingEnd="20dp"
    android:paddingBottom="40dp">

    <TextView
    android:id="@+id/tv_title"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:text="title"
    android:textSize="25dp" />

    <TextView
    android:id="@+id/tv_message"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="20dp"
    android:gravity="center"
    android:text="message"
    android:textSize="20dp" />

    <LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="20dp">

    <android.widget.Button
    android:id="@+id/btn_confirm"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_marginRight="5dp"
    android:layout_weight="1"
    android:text="confirm"
    android:textColor="@color/black" />

    </LinearLayout>
    </LinearLayout>

    (2)Code

    AlertDialog.Builder builder = new AlertDialog.Builder(this);

    View view = View.inflate(this, R.layout.custom_dialog2, null);
    builder.setView(view);
    builder.setCancelable(false);

    AlertDialog alertDialog = builder.create();

    TextView tvTitle = view.findViewById(R.id.tv_title);
    TextView tvMessage = view.findViewById(R.id.tv_message);
    Button btnConfirm = view.findViewById(R.id.btn_confirm);

    tvTitle.setText("这是标题");
    tvMessage.setText("这是消息");
    btnConfirm.setText("确定");

    btnConfirm.setOnClickListener(v -> {
    Toast.makeText(this, "点击了确定", Toast.LENGTH_SHORT).show();
    alertDialog.dismiss();
    });

    alertDialog.show();

    3、解读
  • 创建 AlertDialog.Builder 对象
  • AlertDialog.Builder builder = new AlertDialog.Builder(this);

  • 加载自定义布局
  • View view = View.inflate(this, R.layout.custom_dialog2, null);
    builder.setView(view);

  • 设置对话框不可取消
  • builder.setCancelable(false);

  • 创建 AlertDialog 对象
  • AlertDialog alertDialog = builder.create();

  • 获取布局中的控件
  • TextView tvTitle = view.findViewById(R.id.tv_title);
    TextView tvMessage = view.findViewById(R.id.tv_message);
    Button btnConfirm = view.findViewById(R.id.btn_confirm);

  • 设置控件文本
  • tvTitle.setText("这是标题");
    tvMessage.setText("这是消息");
    btnConfirm.setText("确定");

  • 设置按钮点击事件
  • btnConfirm.setOnClickListener(v -> {
    Toast.makeText(this, "点击了确定", Toast.LENGTH_SHORT).show();
    alertDialog.dismiss();
    });

  • 显示对话框
  • alertDialog.show();


    一 – 3、使用 AlertDialog.Builder 创建只显示信息的自定义对话框

    1、基本介绍
    -说明
    元素 标题消息
    特性 对话框可取消
    2、演示
    (1)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:gravity="center"
    android:orientation="vertical"
    android:paddingStart="20dp"
    android:paddingTop="40dp"
    android:paddingEnd="20dp"
    android:paddingBottom="40dp">

    <TextView
    android:id="@+id/tv_title"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:text="title"
    android:textSize="25dp" />

    <TextView
    android:id="@+id/tv_message"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="20dp"
    android:gravity="center"
    android:text="message"
    android:textSize="20dp" />

    </LinearLayout>

    (2)Code

    AlertDialog.Builder builder = new AlertDialog.Builder(this);

    View view = View.inflate(this, R.layout.custom_dialog3, null);
    builder.setView(view);

    AlertDialog alertDialog = builder.create();

    TextView tvTitle = view.findViewById(R.id.tv_title);
    TextView tvMessage = view.findViewById(R.id.tv_message);

    tvTitle.setText("这是标题");
    tvMessage.setText("这是消息");

    alertDialog.show();

    3、解读
  • 创建 AlertDialog.Builder 对象
  • AlertDialog.Builder builder = new AlertDialog.Builder(this);

  • 加载自定义布局
  • View view = View.inflate(this, R.layout.custom_dialog3, null);
    builder.setView(view);

  • 创建 AlertDialog 对象
  • AlertDialog alertDialog = builder.create();

  • 获取布局中的控件
  • TextView tvTitle = view.findViewById(R.id.tv_title);
    TextView tvMessage = view.findViewById(R.id.tv_message);

  • 设置控件文本
  • tvTitle.setText("这是标题");
    tvMessage.setText("这是消息");

  • 显示对话框
  • alertDialog.show();


    二 – 1、使用 Dialog 创建带有两个按钮的自定义对话框

    1、基本介绍
    -说明
    元素 标题消息确定按钮取消按钮
    特性 对话框不可取消两个按钮都有点击事件处理,点击后显示 Toast 并关闭对话框
    2、演示
    (1)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:gravity="center"
    android:orientation="vertical"
    android:paddingStart="20dp"
    android:paddingTop="40dp"
    android:paddingEnd="20dp"
    android:paddingBottom="40dp">

    <TextView
    android:id="@+id/tv_title"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:text="title"
    android:textSize="25dp" />

    <TextView
    android:id="@+id/tv_message"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="20dp"
    android:gravity="center"
    android:text="message"
    android:textSize="20dp" />

    <LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="20dp">

    <android.widget.Button
    android:id="@+id/btn_confirm"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_marginRight="5dp"
    android:layout_weight="1"
    android:text="confirm"
    android:textColor="@color/black" />

    <android.widget.Button
    android:id="@+id/btn_cancel"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_marginLeft="5dp"
    android:layout_weight="1"
    android:text="cancel"
    android:textColor="@color/black" />

    </LinearLayout>
    </LinearLayout>

    (2)Code

    Dialog dialog = new Dialog(this);
    dialog.setContentView(R.layout.custom_dialog1);
    dialog.setCancelable(false);

    TextView tvTitle = dialog.findViewById(R.id.tv_title);
    TextView tvMessage = dialog.findViewById(R.id.tv_message);
    Button btnConfirm = dialog.findViewById(R.id.btn_confirm);
    Button btnCancel = dialog.findViewById(R.id.btn_cancel);

    tvTitle.setText("这是标题");
    tvMessage.setText("这是消息");
    btnConfirm.setText("确定");
    btnCancel.setText("取消");

    btnConfirm.setOnClickListener(v -> {
    Toast.makeText(this, "点击了确定", Toast.LENGTH_SHORT).show();
    dialog.dismiss();
    });

    btnCancel.setOnClickListener((v) -> {
    Toast.makeText(this, "点击了取消", Toast.LENGTH_SHORT).show();
    dialog.dismiss();
    });

    dialog.show();

    3、解读
  • 创建 Dialog 对象
  • Dialog dialog = new Dialog(this);

  • 加载自定义布局
  • dialog.setContentView(R.layout.custom_dialog1);

  • 设置对话框不可取消
  • dialog.setCancelable(false);

  • 获取布局中的控件
  • TextView tvTitle = dialog.findViewById(R.id.tv_title);
    TextView tvMessage = dialog.findViewById(R.id.tv_message);
    Button btnConfirm = dialog.findViewById(R.id.btn_confirm);
    Button btnCancel = dialog.findViewById(R.id.btn_cancel);

  • 设置控件文本
  • tvTitle.setText("这是标题");
    tvMessage.setText("这是消息");
    btnConfirm.setText("确定");
    btnCancel.setText("取消");

  • 设置按钮点击事件
  • btnConfirm.setOnClickListener(v -> {
    Toast.makeText(this, "点击了确定", Toast.LENGTH_SHORT).show();
    dialog.dismiss();
    });

    btnCancel.setOnClickListener((v) -> {
    Toast.makeText(this, "点击了取消", Toast.LENGTH_SHORT).show();
    dialog.dismiss();
    });

  • 显示对话框
  • dialog.show();


    二 – 2、使用 Dialog 创建带有一个按钮的自定义对话框

    1、基本介绍
    -说明
    元素 标题消息确定按钮
    特性 对话框不可取消按钮有点击事件处理,点击后显示 Toast 并关闭对话框
    2、演示
    (1)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:gravity="center"
    android:orientation="vertical"
    android:paddingStart="20dp"
    android:paddingTop="40dp"
    android:paddingEnd="20dp"
    android:paddingBottom="40dp">

    <TextView
    android:id="@+id/tv_title"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:text="title"
    android:textSize="25dp" />

    <TextView
    android:id="@+id/tv_message"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="20dp"
    android:gravity="center"
    android:text="message"
    android:textSize="20dp" />

    <LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="20dp">

    <android.widget.Button
    android:id="@+id/btn_confirm"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_marginRight="5dp"
    android:layout_weight="1"
    android:text="confirm"
    android:textColor="@color/black" />

    </LinearLayout>
    </LinearLayout>

    (2)Code

    Dialog dialog = new Dialog(this);
    dialog.setContentView(R.layout.custom_dialog2);
    dialog.setCancelable(false);

    TextView tvTitle = dialog.findViewById(R.id.tv_title);
    TextView tvMessage = dialog.findViewById(R.id.tv_message);
    Button btnConfirm = dialog.findViewById(R.id.btn_confirm);

    tvTitle.setText("这是标题");
    tvMessage.setText("这是消息");
    btnConfirm.setText("确定");

    btnConfirm.setOnClickListener(v -> {
    Toast.makeText(this, "点击了确定", Toast.LENGTH_SHORT).show();
    dialog.dismiss();
    });

    dialog.show();

    3、解读
  • 创建 Dialog 对象
  • Dialog dialog = new Dialog(this);

  • 加载自定义布局
  • dialog.setContentView(R.layout.custom_dialog1);

  • 设置对话框不可取消
  • dialog.setCancelable(false);

  • 获取布局中的控件
  • TextView tvTitle = dialog.findViewById(R.id.tv_title);
    TextView tvMessage = dialog.findViewById(R.id.tv_message);
    Button btnConfirm = dialog.findViewById(R.id.btn_confirm);

  • 设置控件文本
  • tvTitle.setText("这是标题");
    tvMessage.setText("这是消息");
    btnConfirm.setText("确定");

  • 设置按钮点击事件
  • btnConfirm.setOnClickListener(v -> {
    Toast.makeText(this, "点击了确定", Toast.LENGTH_SHORT).show();
    dialog.dismiss();
    });

  • 显示对话框
  • dialog.show();


    二 – 3、使用 Dialog 创建只显示信息的自定义对话框

    1、基本介绍
    -说明
    元素 标题消息
    特性 对话框可取消
    2、演示
    (1)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:gravity="center"
    android:orientation="vertical"
    android:paddingStart="20dp"
    android:paddingTop="40dp"
    android:paddingEnd="20dp"
    android:paddingBottom="40dp">

    <TextView
    android:id="@+id/tv_title"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:text="title"
    android:textSize="25dp" />

    <TextView
    android:id="@+id/tv_message"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="20dp"
    android:gravity="center"
    android:text="message"
    android:textSize="20dp" />

    </LinearLayout>

    (2)Code

    Dialog dialog = new Dialog(this);
    dialog.setContentView(R.layout.custom_dialog3);

    TextView tvTitle = dialog.findViewById(R.id.tv_title);
    TextView tvMessage = dialog.findViewById(R.id.tv_message);

    tvTitle.setText("这是标题");
    tvMessage.setText("这是消息");

    dialog.show();

    3、解读
  • 创建 Dialog 对象
  • Dialog dialog = new Dialog(this);

  • 加载自定义布局
  • dialog.setContentView(R.layout.custom_dialog1);

  • 获取布局中的控件
  • TextView tvTitle = dialog.findViewById(R.id.tv_title);
    TextView tvMessage = dialog.findViewById(R.id.tv_message);

  • 设置控件文本
  • tvTitle.setText("这是标题");
    tvMessage.setText("这是消息");

  • 显示对话框
  • dialog.show();

    赞(0)
    未经允许不得转载:网硕互联帮助中心 » Android 对话框 - 自定义对话框(使用 AlertDialog.Builder、使用 Dialog)
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!