目录
一、对话框的创建
二、单选的对话框
三、多选的对话框
一、对话框的创建
一般的对话框分为标题、内容、按钮三大部分。
常见的方法:
| 方法 | 功能 | 
| setTitle() | 设置对话框的标题 | 
| setIcon() | 设置对话框的图标 | 
| setMessage() | 设置对话框的提示信息 | 
| setPositiveButton() | 设置对话框的确认按钮 | 
| setNegativeButton() | 设置对话框的取消按钮 | 
| setSingleChoiceItems() | 设置单选的对话框 | 
| setMultiChoiceItems() | 设置多选的对话框 | 
| dismiss() | 关闭对话框 | 
| DialogInterface.OnClickListener() | 设置对话框的点击事件 | 
对话框创建步骤:
1、声明AlertDialong对象
2、调用AlertDialog的内部类Builder,设置相关属性。
3、创建对话框 ( dialog = builder.create() )
4、显示对话框( dialog.show() )
代码如下:
package com.example.alertdialog;import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;import android.content.DialogInterface;
import android.os.Bundle;public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}// 当想要退出APP时,调用该方法@Overridepublic void onBackPressed() {// 声明对象AlertDialog dialog;AlertDialog.Builder builder = new AlertDialog.Builder(this).setTitle("普通的对话框").setIcon(R.mipmap.ic_launcher).setMessage("您确定要退出吗?").setPositiveButton("确认", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {dialog.dismiss(); // 关闭对话框MainActivity.this.finish(); // 退出APP}})// 添加取消按钮.setNegativeButton("取消", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {// 点击取消,对话框消失dialog.dismiss();}});// 创建对话框dialog = builder.create();// 显示对话框dialog.show();}
}效果:

二、单选的对话框
案例:通过单选对话框改变字体的颜色
效果图:

MainActivity:
package com.example.alertdialog_single_choice;import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;public class MainActivity extends AppCompatActivity {TextView mTextView;Button btn;// 颜色数组Integer []textColors = {android.R.color.holo_green_light,R.color.black, android.R.color.holo_blue_dark, android.R.color.holo_red_dark};// 数组索引int index = 1;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);btn = findViewById(R.id.btn);mTextView = findViewById(R.id.content);btn.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {AlertDialog dialog;AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this).setTitle("设置字体颜色").setIcon(R.mipmap.ic_launcher)// 设置单选的内容.setSingleChoiceItems(new String[]{"绿色","黑色", "蓝色", "红色"}, index, new DialogInterface.OnClickListener() {// which 就是选到那个item的位置public void onClick(DialogInterface dialog, int which) {// 获取数组的索引index = which;}})// 确认按钮.setPositiveButton("确认", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {// 确认就设置字体的颜色mTextView.setTextColor(getResources().getColor(textColors[index]));dialog.dismiss();}})// 取消按钮.setNegativeButton("取消", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {dialog.dismiss();}});// 创建dialog对象dialog = builder.create();// 显示对话框dialog.show();}});}
}布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context=".MainActivity"><TextViewandroid:id="@+id/content"android:layout_gravity="center"android:textSize="30sp"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Hello World!" /><Buttonandroid:id="@+id/btn"android:layout_gravity="center"android:textSize="15sp"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="点击按钮选择字体颜色"/></LinearLayout>三、多选的对话框
案例:通过多选对话框选择自己的兴趣爱好,并显示到文本框。
效果:

MainActivity:
 package com.example.alertdialog_multiple_choice;import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;public class MainActivity extends AppCompatActivity {private TextView mTextView;private Button mButton;private String []hobbies ={"看电影","旅游","运动","听音乐"};private boolean []checked = {false,false,false,false};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mTextView = findViewById(R.id.text_view);mButton = findViewById(R.id.btn);mButton.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {AlertDialog dialog;AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this).setTitle("请选择你的兴趣").setIcon(R.mipmap.ic_launcher).setMultiChoiceItems(hobbies, checked, new DialogInterface.OnMultiChoiceClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which, boolean isChecked) {checked[which] = isChecked;}}).setPositiveButton("确认", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {StringBuilder stringBuilder = new StringBuilder();for (int i = 0; i < checked.length; i++) {if (checked[i]){stringBuilder.append(hobbies[i]).append(" ");}if (stringBuilder!=null){mTextView.setText(stringBuilder);}}dialog.dismiss();}}).setNegativeButton("取消", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {dialog.dismiss();}});dialog = builder.create();dialog.show();}});}
}布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:orientation="vertical"android:layout_height="match_parent"><TextViewandroid:textSize="18sp"android:id="@+id/text_view"android:layout_width="match_parent"android:layout_height="70dp"/><Buttonandroid:id="@+id/btn"android:layout_gravity="center"android:text="请选择你的兴趣"android:layout_width="wrap_content"android:layout_height="wrap_content"/></LinearLayout>
















