Android Dialog使用汇总

Dialog分类

在这里插入图片描述

AlertDialog

Dialog 类是对话框的基类,官方建议我们不要直接实例化它,而是使用其子类来获取实例。AlertDialog是系统提供的一个直接子类,它能帮助我们快速构建出不同类型的弹窗。接下来就看下各种类型弹窗的使用。

1、普通对话框

在这里插入图片描述

                AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this)
                        .setIcon(R.drawable.ic_launcher_background)
                        .setTitle("普通对话框的标题")
                        .setMessage("我是内容")
                        .setPositiveButton("确定", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                Toast.makeText(MainActivity.this, "点击了确定", Toast.LENGTH_SHORT).show();
                            }
                        })
                        .setNegativeButton("取消", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                Toast.makeText(MainActivity.this, "点击了取消", Toast.LENGTH_SHORT).show();
                            }
                        })
                        //Neutral按钮,显示在dialog的最左面。
                        .setNeutralButton("不确定", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                Toast.makeText(MainActivity.this, "点击了不确定", Toast.LENGTH_SHORT).show();
                            }
                        });

                AlertDialog dialog = builder.create();
                dialog.show();
2、列表对话框

在这里插入图片描述

         String[] itemArray = {"第一个", "第二个", "第三个", "第四个", "第五个"};
                AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this)
                        .setIcon(R.drawable.ic_launcher_background)
                        .setTitle("列表对话框的标题")
                        .setItems(itemArray, new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                Toast.makeText(MainActivity.this, "点击了" + itemArray[which], Toast.LENGTH_SHORT).show();
                            }
                        });

                AlertDialog dialog = builder.create();
                dialog.show();
3、单选对话框

在这里插入图片描述

       String[] itemArray = {"第一个", "第二个", "第三个", "第四个", "第五个"};
                AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this)
                        .setIcon(R.drawable.ic_launcher_background)
                        .setTitle("单选对话框的标题")
                        .setSingleChoiceItems(itemArray, 0, new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {

                            }
                        })
                        .setPositiveButton("确定", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                Toast.makeText(MainActivity.this, "点击了确定", Toast.LENGTH_SHORT).show();
                            }
                        })
                        .setNegativeButton("取消", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                Toast.makeText(MainActivity.this, "点击了取消", Toast.LENGTH_SHORT).show();
                            }
                        });

                AlertDialog dialog = builder.create();
                dialog.show();
4、多选对话框

在这里插入图片描述

    String[] itemArray = {"第一个", "第二个", "第三个", "第四个", "第五个"};
                AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this)
                        .setIcon(R.drawable.ic_launcher_background)
                        .setTitle("多选对话框的标题")
                        .setMultiChoiceItems(itemArray, null, new DialogInterface.OnMultiChoiceClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which, boolean isChecked) {

                            }
                        })
                        .setPositiveButton("确定", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                Toast.makeText(MainActivity.this, "点击了确定", Toast.LENGTH_SHORT).show();
                            }
                        })
                        .setNegativeButton("取消", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                Toast.makeText(MainActivity.this, "点击了取消", Toast.LENGTH_SHORT).show();
                            }
                        });

                AlertDialog dialog = builder.create();
                dialog.show();
5、多选对话框

在这里插入图片描述

             View customView = LayoutInflater.from(MainActivity.this)
                        .inflate(R.layout.dialog_custom_view_1, null);
                AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this)
                        .setIcon(R.drawable.ic_launcher_background)
                        .setTitle("自定义对话框的标题")
                        .setView(customView)
                        .setPositiveButton("确定", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                Toast.makeText(MainActivity.this, "点击了确定", Toast.LENGTH_SHORT).show();
                            }
                        })
                        .setNegativeButton("取消", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                Toast.makeText(MainActivity.this, "点击了取消", Toast.LENGTH_SHORT).show();
                            }
                        });

                AlertDialog dialog = builder.create();
                dialog.show();
6、DatePickerDialog,日期选择对话框

默认显示
在这里插入图片描述

         DatePickerDialog datePickerDialog = new DatePickerDialog(MainActivity.this,
                        new DatePickerDialog.OnDateSetListener() {
                    @Override
                    public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
                        Toast.makeText(MainActivity.this, 
                                year + "-" + month + "-" + dayOfMonth, Toast.LENGTH_SHORT).show();
                    }
                }, 2024, 5, 4);

                datePickerDialog.show();

修改对话框themeStyle为:AlertDialog.THEME_HOLO_LIGHT,效果如下:
在这里插入图片描述

  DatePickerDialog datePickerDialog = new DatePickerDialog(MainActivity.this,
                        AlertDialog.THEME_HOLO_LIGHT,
                        new DatePickerDialog.OnDateSetListener() {
                    @Override
                    public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
                        Toast.makeText(MainActivity.this,
                                year + "-" + month + "-" + dayOfMonth, Toast.LENGTH_SHORT).show();
                    }
                }, 2024, 5, 4);

                datePickerDialog.show();
7、TimePickerDialog,时间选择对话框

默认显示
在这里插入图片描述

                TimePickerDialog timePickerDialog = new TimePickerDialog(MainActivity.this, new TimePickerDialog.OnTimeSetListener() {
                    @Override
                    public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
                        Toast.makeText(MainActivity.this, hourOfDay + ":" + minute, Toast.LENGTH_SHORT).show();
                    }
                }, 9, 36, true);

                timePickerDialog.show();

修改对话框themeStyle为:AlertDialog.THEME_HOLO_LIGHT,效果如下:
在这里插入图片描述

                TimePickerDialog timePickerDialog = new TimePickerDialog(MainActivity.this, AlertDialog.THEME_HOLO_LIGHT, new TimePickerDialog.OnTimeSetListener() {
                    @Override
                    public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
                        Toast.makeText(MainActivity.this, hourOfDay + ":" + minute, Toast.LENGTH_SHORT).show();
                    }
                }, 9, 36, true);

                timePickerDialog.show();
8、ProgressDialog

官方已弃用,建议使用ProgressBar代替,自定义Dialog加载对话框。

Android 包含另一个名为 ProgressDialog 的对话框类,该类可显示带有进度条的对话框。此 widget 已废弃,因为它会在显示进度时阻止用户与应用互动。如果您需要指示加载进度或不确定的进度,请遵循进度和 Activity 中的设计准则,并在布局中使用 ProgressBar,而不是 ProgressDialog。

9、DialogFragment

DialogFragment是继承Fragment的,拥有和Fragment一样的生命周期。在使用时,更容易通过生命周期回调来管理弹窗。对于复杂样式的弹窗,使用DialogFragment更加方便和高效。

注:Dialog官方介绍文档

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/680398.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【遗传算法】【机器学习】【Python】常见交叉方法(一)、单点交叉和两点交叉

一、遗传算法流程图 交叉过程即存在于上图的”交叉“(crossover)步骤中。 二、单点交叉 随机地选择1个交叉位点进行交叉,如下图所示: 用random库实现随机性: import random# 简单的单点交叉方式 def sing_muta(lis…

AI写作革命:毕业论文的新助手

写作这件事一直让我们从小学时期就开始头痛,初高中时期800字的作文让我们焦头烂额,一篇作文里用尽了口水话,拼拼凑凑才勉强完成。 大学时期以为可以轻松顺利毕业,结果毕业前的最后一道坎拦住我们的是毕业论文,这玩意不…

操作简单中医电子处方中药划价系统软件视频教程,佳易王诊所电子处方管理系统软件

操作简单中医电子处方中药划价系统软件视频教程,佳易王诊所电子处方管理系统软件 一、前言 以下软件操作教程以,佳易王中西医诊所电子处方软件为例说明 软件文件下载可以点击最下方官网卡片——软件下载——试用版软件下载 1、软件支持中医和西医处方…

多功能光时域反射仪的工作原理

6426A-2101多功能光时域反射仪是新一代掌上型智能化光纤通信测量仪器,具有强大的功能和广泛的应用领域。它能够显示光纤及光缆的损耗分布曲线图,测量光纤及光缆的多种关键参数,包括长度、损耗、接续质量等,为光纤通信系统的工程施…

leetcode第867题:转置矩阵

matrix[i][j]需要放在转置矩阵的(j,i)位置 public class Solution {public int[][] Transpose(int[][] matrix) {int rows matrix.Length; int columns matrix[0].Length; int[][] array2 new int[columns][];// 初始化内部数组(列数)for (int i 0…

GAT1399协议分析(六)--校时

一、官方消息定义 DeviceIDType :GA/T1400.1,采集设备、 卡口点位、 采集系统、分析系统、视图库、应用平台等设备编码规则 TimeCorrectModeType: dateTime时间格式: TimeZone:时区,GAT1400里面没有找到具体内容&…

四川菊乐食品IPO终止:收入增速放缓,内控缺陷遭关注,产能过剩

近日,深圳证券交易所披露的信息显示,四川菊乐食品股份有限公司(下称“菊乐股份”或“菊乐食品”)及其保荐人中信建投证券撤回上市申请文件。因此,深圳证券交易所决定终止对该公司首次公开发行股票并在主板上市的审核。…

openGauss系数据库逻辑复制实现双写

本篇关于逻辑复制实现双写的案例,本来准备了3个环境,分别是306、501和505,奈何在5版本向3版本订阅的时候,出现了报错,但也将整个过程都记录下来吧。 环境准备 节点信息 MogDB# select version(); …

关于认证协议

本地用户认证 本地认证的意思就是,我们的电脑上存储着自己的账号密码,无论电脑是否联网,只要能开机,就可以输入账号密码登录到电脑中,工作组就是采用本地认证 本地认证流程 winlogon.exe -> 接收用户输入 -> …

哇噻,Zabbix7.0 LTS正式发布!功能又进化了!

📢📢📢📣📣📣 作者:IT邦德 中国DBA联盟(ACDU)成员,10余年DBA工作经验, Oracle、PostgreSQL ACE CSDN博客专家及B站知名UP主,全网粉丝10万 擅长主流Oracle、My…

Python图像处理十讲

文章目录 1 初步2 光斑分析3 插值变换4 形态学处理5 滤波6 opencv初步7 相机校准8 图像分割9 边缘检测10 目标识别 1 初步 📷初步 图像的本质就是矩阵,图像处理,也就是矩阵处理。所以,在Python中,numpy和matplotlib可…

【python009】Python处理某区域边界经纬度数据至geohash

1.熟悉、梳理、总结项目研发实战中的Python开发日常使用中的问题、知识点等,如Python处理某区域边界经纬度数据至geohash,便于时空交集。 2.欢迎点赞、关注、批评、指正,互三走起来,小手动起来! 3.欢迎点赞、关注、批评…

FuTalk设计周刊-Vol.044

#AI漫谈 热点捕手 1、OpenAI取消GPT-4 Turbo,所有每日限制! 2月17日,OpenAI在社交平台宣布,取消了GPT-4 Turbo的所有每日限制,并将速率限制提升1倍。现在,每分钟可处理高达150万TPM的数据。 链接https:/…

数据库JDBC 查询sqlserver 2019 利用模板实现输入查询

数据源 SQLserver2019的数据,在数据库 名为 cyz 中创建几个表 create table book (bno char(10) primary key, cno char(10), bname char(20), bauthor char(20), bpress varchar(50), bprice decimal(8,2) )create table reader (rno char(10) primary key, rdepa…

java中如何灵活使用mysql中的json类型字段存储数据

日常数据库存储数据时经常会碰见一对多的数据结构类型,例如一笔订单中包含多个商品数据,一般情况下,可能会设计一个order表,一个sku表,但如果就想用一个表去存储这些订单和商品数据,那么应该如何去设计order表呢?这种情况下就可以使用万能json类型字段进行存储订单与商品一对多…

产品经理的“高光”时刻,你中了几个?

作为产品经理,都有着这样一个闪闪发光的梦,就是看着自己的产品从0到DAU过万、过十万,甚至是过百万。 不过想要成为过百万的大牛,天时地利任何一个都不能少,大多数的产品经理暂时还在打怪升级攒经验。 虽然暂时体验不…

怎么用微信小程序实现远程控制空调

怎么用微信小程序实现远程控制空调呢? 本文描述了使用微信小程序调用HTTP接口,实现控制空调,通过不同规格的通断器,来控制不同功率的空调的电源。 可选用产品:可根据实际场景需求,选择对应的规格 序号设备…

第二证券炒股技巧:短线炒股技巧?

在股票商场上,出资者分为长线和短线这两大类,其间短线炒股存在以下技巧: 1、早盘集合竞价时间上的技巧 早上集合竞价对短线出资者来说比较重要,其间早上集合竞价期间9:15-9:20之间出资者能够进行撤单操作&#xff0c…

AI大模型应用开发实践:5.快速入门 Assistants API

快速入门 Assistants API Assistants API 允许您在自己的应用程序中构建人工智能助手。一个助手有其指令,并可以利用模型、工具和知识来回应用户查询。 Assistants API 目前支持三种类型的工具: 代码解释器 Code Interpreter检索 Retrieval函数调用 Function calling使用 P…

电源modbus 485 测试方法之功能选择

目录 背景介绍 错误分析 功能开关拨码原因分析 背景介绍 在正常测试modbus-RTU 485通信是否正常时,正常的流程如下: 连接电源模块与摄像仪模块的485连接线,或使用USB转485连接电脑,打开串口调试助手,开始访问寄存…