目录
一、对话框的创建
二、单选的对话框
三、多选的对话框
一般的对话框分为标题、内容、按钮三大部分。
常见的方法:
方法 | 功能 |
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 {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
// 当想要退出APP时,调用该方法
@Override
public void onBackPressed() {
// 声明对象
AlertDialog dialog;
AlertDialog.Builder builder = new AlertDialog.Builder(this)
.setTitle("普通的对话框")
.setIcon(R.mipmap.ic_launcher)
.setMessage("您确定要退出吗?")
.setPositiveButton("确认", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss(); // 关闭对话框
MainActivity.this.finish(); // 退出APP
}
})
// 添加取消按钮
.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public 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;
@Override
protected 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() {
@Override
public 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() {
@Override
public void onClick(DialogInterface dialog, int which) {
// 确认就设置字体的颜色
mTextView.setTextColor(getResources().getColor(textColors[index]));
dialog.dismiss();
}
})
// 取消按钮
.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
// 创建dialog对象
dialog = builder.create();
// 显示对话框
dialog.show();
}
});
}
}
布局:
案例:通过多选对话框选择自己的兴趣爱好,并显示到文本框。
效果:
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};
@Override
protected 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() {
@Override
public 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() {
@Override
public void onClick(DialogInterface dialog, int which, boolean isChecked) {
checked[which] = isChecked;
}
})
.setPositiveButton("确认", new DialogInterface.OnClickListener() {
@Override
public 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() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
dialog = builder.create();
dialog.show();
}
});
}
}
布局: