普通对话框
用构建器创建对话框:先创建对话框再显示
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();