Android中使用AlertDialog实现几种不同的对话框
程序员文章站
2022-05-27 19:05:41
场景 app中常见的对话框。 简单的带确定取消按钮的对话框 带列表的对话框 带单项选择的对话框 带多项选择的对话框 注: 博客: https://blog.csdn.net/badao_liumang_qizhi 关注公众号 霸道的程序猿 获取编程相关电子书、教程推送与免费下载。 实现 将布局改为L ......
场景
app中常见的对话框。
简单的带确定取消按钮的对话框
带列表的对话框
带单项选择的对话框
带多项选择的对话框
注:
博客:
关注公众号
霸道的程序猿
获取编程相关电子书、教程推送与免费下载。
实现
将布局改为linearlayout,并通过android:orientation="vertical">设置为垂直布局。并添加四个按钮
<?xml version="1.0" encoding="utf-8"?> <linearlayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:gravity="center_horizontal" tools:context=".alertdialogactivity"> <button android:id="@+id/button1" android:layout_width="match_parent" android:layout_height="wrap_content" android:textcolor="#090808" android:background="#f44336" android:text="1" /> <button android:id="@+id/button2" android:layout_width="match_parent" android:layout_height="wrap_content" android:textcolor="#2196f3" android:background="#ff9800" android:text="2" /> <button android:id="@+id/button3" android:layout_width="match_parent" android:layout_height="wrap_content" android:textcolor="#f44336" android:background="#43b243" android:text="3" /> <button android:id="@+id/button4" android:layout_width="match_parent" android:layout_height="wrap_content" android:textcolor="#9c27b0" android:background="#f9671e" android:text="4" /> </linearlayout>
然后来到activity
带确定取消按钮的对话框
// 获取“显示带取消、确定按钮的对话框”按钮 button button1 = (button) findviewbyid(r.id.button1); // 为“显示带取消、确定按钮的对话框”按钮添加单击事件监听器 button1.setonclicklistener(new view.onclicklistener() { @override public void onclick(view v) { //创建对话框对象 这里要通过builder来创建 alertdialog alertdialog = new alertdialog.builder(alertdialogactivity.this).create(); alertdialog.seticon(r.drawable.dog); //设置对话框的图标 alertdialog.settitle("公众号:"); //设置对话框的标题 alertdialog.setmessage("霸道的程序猿"); //设置要显示的内容 //sdk版本问题 if (build.version.sdk_int >= build.version_codes.cupcake) { //添加取消按钮 alertdialog.setbutton(dialoginterface.button_negative, "否", new dialoginterface.onclicklistener() { @override public void onclick(dialoginterface dialog, int which) { toast.maketext(alertdialogactivity.this, "您单击了否按钮", toast.length_short).show(); } }); } //添加确定按钮 if (build.version.sdk_int >= build.version_codes.cupcake) { alertdialog.setbutton(dialoginterface.button_positive, "是", new dialoginterface.onclicklistener() { @override public void onclick(dialoginterface dialog, int which) { toast.maketext(alertdialogactivity.this, "您单击了是按钮 ", toast.length_short).show(); } }); } alertdialog.show(); //显示对话框 } });
带列表的对话框
// 获取“显示带列表的对话框”按钮 button button2 = (button) findviewbyid(r.id.button2); button2.setonclicklistener(new view.onclicklistener() { @override public void onclick(view v) { //创建水果字符串数组 final string[] items = new string[]{"苹果", "橘子", "香蕉", "西瓜"}; //创建列表对话框对象 alertdialog.builder builder = new alertdialog.builder(alertdialogactivity.this); //设置对话框的图标 builder.seticon(r.drawable.dog); //设置对话框的标题 builder.settitle("请选择你喜欢的水果:"); //添加列表项 builder.setitems(items, new dialoginterface.onclicklistener() { @override public void onclick(dialoginterface dialog, int which) { toast.maketext(alertdialogactivity.this, "您选择了" + items[which], toast.length_short).show(); } }); builder.create().show(); // 创建对话框并显示 } });
带单项选择的对话框
// 获取“显示带单选列表项的对话框”按钮 button button3 = (button) findviewbyid(r.id.button3); button3.setonclicklistener(new view.onclicklistener() { @override public void onclick(view v) { //创建动物字符串数组 final string[] items = new string[]{"小猫", "小狗", "乌龟", "金鱼", "小猪"}; // 显示带单选列表项的对话框 alertdialog.builder builder = new alertdialog.builder(alertdialogactivity.this); builder.seticon(r.drawable.dog); //设置对话框的图标 builder.settitle("如果让你选择,你最喜欢哪一个:"); //设置对话框的标题 builder.setsinglechoiceitems(items, 0, new dialoginterface.onclicklistener() { @override public void onclick(dialoginterface dialog, int which) { toast.maketext(alertdialogactivity.this, "您选择了" + items[which], toast.length_short).show(); //显示选择结果 } }); //添加确定按钮 builder.setpositivebutton("确定", null); builder.create().show(); // 创建对话框并显示 } });
带多项选择的对话框
首先声明两个变量用来存储各列表项要显示的内容和记录各列表项的状态
private boolean[] checkeditems;//记录各列表项的状态 private string[] items;//各列表项要显示的内容
然后
// 获取“显示带多选列表项的对话框”按钮 button button4 = (button) findviewbyid(r.id.button4); button4.setonclicklistener(new view.onclicklistener() { @override public void onclick(view v) { checkeditems = new boolean[]{false, true, false, true, false}; //记录各列表项的状态 //各列表项要显示的内容 items = new string[]{"开心消消乐", "球球大作战", "欢乐斗地主", "梦幻西游", "超级玛丽"}; // 显示带单选列表项的对话框 alertdialog.builder builder = new alertdialog.builder(alertdialogactivity.this); builder.seticon(r.drawable.dog); //设置对话框的图标 builder.settitle("请选择您喜爱的游戏:"); //设置对话框标题 builder.setmultichoiceitems(items, checkeditems, new dialoginterface.onmultichoiceclicklistener() { @override public void onclick(dialoginterface dialog, int which, boolean ischecked) { checkeditems[which] = ischecked; //改变被操作列表项的状态 } }); //为对话框添加“确定”按钮 builder.setpositivebutton("确定", new dialoginterface.onclicklistener() { @override public void onclick(dialoginterface dialog, int which) { string result = ""; for (int i = 0; i < checkeditems.length; i++) { //当选项被选择时 if (checkeditems[i]) { //将选项的内容添加到result中 result += items[i] + "、"; } } //当result不为空时,通过消息提示框显示选择的结果 if (!"".equals(result)) { //去掉最后面添加的“、”号 result = result.substring(0, result.length() - 1); toast.maketext(alertdialogactivity.this, "您选择了[ " + result + " ]", toast.length_long).show(); } } }); builder.create().show(); // 创建对话框并显示 } });
完整示例代码
package com.badao.relativelayouttest; import androidx.appcompat.app.appcompatactivity; import android.app.alertdialog; import android.content.dialoginterface; import android.os.build; import android.os.bundle; import android.view.view; import android.widget.button; import android.widget.toast; public class alertdialogactivity extends appcompatactivity { private boolean[] checkeditems;//记录各列表项的状态 private string[] items;//各列表项要显示的内容 @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_alert_dialog); // 获取“显示带取消、确定按钮的对话框”按钮 button button1 = (button) findviewbyid(r.id.button1); // 为“显示带取消、确定按钮的对话框”按钮添加单击事件监听器 button1.setonclicklistener(new view.onclicklistener() { @override public void onclick(view v) { //创建对话框对象 这里要通过builder来创建 alertdialog alertdialog = new alertdialog.builder(alertdialogactivity.this).create(); alertdialog.seticon(r.drawable.dog); //设置对话框的图标 alertdialog.settitle("公众号:"); //设置对话框的标题 alertdialog.setmessage("霸道的程序猿"); //设置要显示的内容 //sdk版本问题 if (build.version.sdk_int >= build.version_codes.cupcake) { //添加取消按钮 alertdialog.setbutton(dialoginterface.button_negative, "否", new dialoginterface.onclicklistener() { @override public void onclick(dialoginterface dialog, int which) { toast.maketext(alertdialogactivity.this, "您单击了否按钮", toast.length_short).show(); } }); } //添加确定按钮 if (build.version.sdk_int >= build.version_codes.cupcake) { alertdialog.setbutton(dialoginterface.button_positive, "是", new dialoginterface.onclicklistener() { @override public void onclick(dialoginterface dialog, int which) { toast.maketext(alertdialogactivity.this, "您单击了是按钮 ", toast.length_short).show(); } }); } alertdialog.show(); //显示对话框 } }); // 获取“显示带列表的对话框”按钮 button button2 = (button) findviewbyid(r.id.button2); button2.setonclicklistener(new view.onclicklistener() { @override public void onclick(view v) { //创建水果字符串数组 final string[] items = new string[]{"苹果", "橘子", "香蕉", "西瓜"}; //创建列表对话框对象 alertdialog.builder builder = new alertdialog.builder(alertdialogactivity.this); //设置对话框的图标 builder.seticon(r.drawable.dog); //设置对话框的标题 builder.settitle("请选择你喜欢的水果:"); //添加列表项 builder.setitems(items, new dialoginterface.onclicklistener() { @override public void onclick(dialoginterface dialog, int which) { toast.maketext(alertdialogactivity.this, "您选择了" + items[which], toast.length_short).show(); } }); builder.create().show(); // 创建对话框并显示 } }); // 获取“显示带单选列表项的对话框”按钮 button button3 = (button) findviewbyid(r.id.button3); button3.setonclicklistener(new view.onclicklistener() { @override public void onclick(view v) { //创建动物字符串数组 final string[] items = new string[]{"小猫", "小狗", "乌龟", "金鱼", "小猪"}; // 显示带单选列表项的对话框 alertdialog.builder builder = new alertdialog.builder(alertdialogactivity.this); builder.seticon(r.drawable.dog); //设置对话框的图标 builder.settitle("如果让你选择,你最喜欢哪一个:"); //设置对话框的标题 builder.setsinglechoiceitems(items, 0, new dialoginterface.onclicklistener() { @override public void onclick(dialoginterface dialog, int which) { toast.maketext(alertdialogactivity.this, "您选择了" + items[which], toast.length_short).show(); //显示选择结果 } }); //添加确定按钮 builder.setpositivebutton("确定", null); builder.create().show(); // 创建对话框并显示 } }); // 获取“显示带多选列表项的对话框”按钮 button button4 = (button) findviewbyid(r.id.button4); button4.setonclicklistener(new view.onclicklistener() { @override public void onclick(view v) { checkeditems = new boolean[]{false, true, false, true, false}; //记录各列表项的状态 //各列表项要显示的内容 items = new string[]{"开心消消乐", "球球大作战", "欢乐斗地主", "梦幻西游", "超级玛丽"}; // 显示带单选列表项的对话框 alertdialog.builder builder = new alertdialog.builder(alertdialogactivity.this); builder.seticon(r.drawable.dog); //设置对话框的图标 builder.settitle("请选择您喜爱的游戏:"); //设置对话框标题 builder.setmultichoiceitems(items, checkeditems, new dialoginterface.onmultichoiceclicklistener() { @override public void onclick(dialoginterface dialog, int which, boolean ischecked) { checkeditems[which] = ischecked; //改变被操作列表项的状态 } }); //为对话框添加“确定”按钮 builder.setpositivebutton("确定", new dialoginterface.onclicklistener() { @override public void onclick(dialoginterface dialog, int which) { string result = ""; for (int i = 0; i < checkeditems.length; i++) { //当选项被选择时 if (checkeditems[i]) { //将选项的内容添加到result中 result += items[i] + "、"; } } //当result不为空时,通过消息提示框显示选择的结果 if (!"".equals(result)) { //去掉最后面添加的“、”号 result = result.substring(0, result.length() - 1); toast.maketext(alertdialogactivity.this, "您选择了[ " + result + " ]", toast.length_long).show(); } } }); builder.create().show(); // 创建对话框并显示 } }); } }
推荐阅读
-
解析Android中实现滑动翻页之ViewFlipper的使用详解
-
android几种不同对话框的实现方式
-
Android中Dialog对话框的使用小结
-
Android中实现圆角图片的几种方法
-
浅析Android Service中实现弹出对话框的坑
-
Android中实现异步任务机制的AsyncTask方式的使用讲解
-
Android中使用AlertDialog实现几种不同的对话框
-
Android中AlertDialog四种对话框的最科学编写用法(实例代码)
-
Android使用AlertDialog实现的信息列表单选、多选对话框功能
-
Android开发实现AlertDialog中View的控件设置监听功能分析