创建自定义对话框
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 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();
一 – 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 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 创建只显示信息的自定义对话框
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 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();
二 – 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 = 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 = 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 = 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();
评论前必须登录!
注册