普通对话框
用构建器创建对话框:先创建对话框再显示
setTitle 设置对话框标题
setMessage 设置对话框展示消息
setPositiveButton 设置对话框确定按钮
setNegativeButton 设置对话框取消按钮
setlcon() 设置对话框图标
AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("提示") .setMessage("您确定要退出程序吗?") .setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { finish(); } }) .setNegativeButton("取消", null).show();
自定义对话框
创建对话框布局
<?xml version="1.0" encoding="utf-8"?> <!-- 自定义对话框-1.为对话框设置布局 --> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:background="@mipmap/download1" android:gravity="center_horizontal" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="200dp" android:text="您确定要退出吗?" android:textColor="@color/white" android:textSize="34dp" android:textStyle="bold"/> <LinearLayout android:orientation="horizontal" android:layout_margin="25dp" android:gravity="center_horizontal" android:layout_width="match_parent" android:layout_height="wrap_content"> <Button android:id="@+id/yes_btn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="确定"/> <Button android:id="@+id/no_btn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="10dp" android:text="取消"/> </LinearLayout> </LinearLayout>
设置风格:在values下的themes文件中添加以下字段
<!-- 自定义对话框-2.设置style <item name="android:windowFullscreen">true</item> 要全屏吗? 对 <item name="android:windowNoTitle">true</item> 不要标题吗? 对 --> <style name="Mydialog" parent="android:style/Theme.Dialog"> <item name="android:windowNoTitle">true</item> </style>
创建对话框布局对应的activity类,将对话框布局应用到当前的自定义dialog中,并在这个类中设置按钮的点击事件
package com.example.androidstudiostudy; import android.app.Dialog; import android.content.Context; import android.view.View; import androidx.annotation.NonNull; // 创建一个自定义对话框类 public class MyDialog extends Dialog { // 只有一个参数的构造方法。传递需要添加自定义对话框的环境上下文 /*public MyDialog(@NonNull Context context) { super(context); // 1.为对话框设置布局 setContentView(R.layout.dialog_layout); }*/ // 有两个参数的构造方法 // 参数1:需要添加自定义对话框的环境上下文 // 参数2: 设置的样式id public MyDialog(@NonNull Context context, int themeResId) { super(context, themeResId); // 自定义对话框-3.将布局应用到当前自定义的对话框 setContentView(R.layout.dialog_layout); // 为对话框的两个按钮设置点击方法 findViewById(R.id.yes_btn).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // 点击确认 -退出 System.exit(0); } }); findViewById(R.id.no_btn).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // 点击取消 -取消弹窗 dismiss(); } }); } }
.实例化对话框,根据对话框类的构造函数不同传入不同的参数,此时传入的是 环境上下文和样式id,并显示.show()
/ 自定义对话框-4.实例化对话框并显示 传入当前环境变量和第2步设置好的风格样式id*/ MyDialog myDialog = new MyDialog(this,R.style.Mydialog); myDialog.show();