当前位置: 首页 > news >正文

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() {@Overridepublic void onClick(DialogInterface dialog, int which) {Toast.makeText(MainActivity.this, "点击了确定", Toast.LENGTH_SHORT).show();}}).setNegativeButton("取消", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {Toast.makeText(MainActivity.this, "点击了取消", Toast.LENGTH_SHORT).show();}})//Neutral按钮,显示在dialog的最左面。.setNeutralButton("不确定", new DialogInterface.OnClickListener() {@Overridepublic 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() {@Overridepublic 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() {@Overridepublic void onClick(DialogInterface dialog, int which) {}}).setPositiveButton("确定", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {Toast.makeText(MainActivity.this, "点击了确定", Toast.LENGTH_SHORT).show();}}).setNegativeButton("取消", new DialogInterface.OnClickListener() {@Overridepublic 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() {@Overridepublic void onClick(DialogInterface dialog, int which, boolean isChecked) {}}).setPositiveButton("确定", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {Toast.makeText(MainActivity.this, "点击了确定", Toast.LENGTH_SHORT).show();}}).setNegativeButton("取消", new DialogInterface.OnClickListener() {@Overridepublic 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() {@Overridepublic void onClick(DialogInterface dialog, int which) {Toast.makeText(MainActivity.this, "点击了确定", Toast.LENGTH_SHORT).show();}}).setNegativeButton("取消", new DialogInterface.OnClickListener() {@Overridepublic 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() {@Overridepublic 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() {@Overridepublic 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() {@Overridepublic 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() {@Overridepublic 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官方介绍文档

相关文章:

Android Dialog使用汇总

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

[数据集][目标检测]足球场足球运动员身份识别足球裁判员数据集VOC+YOLO格式312张4类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):312 标注数量(xml文件个数):312 标注数量(txt文件个数):312 标注类别…...

学习分享-声明式的 HTTP 客户端OpenFeign

OpenFeign 详细介绍 最近在学习中有用到OpenFeign,也在网上查找了相关资料,做下分享。 一、概述 OpenFeign 是一个声明式的 HTTP 客户端,它使得调用 REST API 变得更加简单和直观。通过 OpenFeign,开发者只需定义接口并添加注解…...

python Tk 获取输入框内容,分割内容

创建输入框、一个按钮和一个标签的GUI。 用户可以在输入框中输入文本,点击按钮后,程序将在控制台打印输入的文本(已经分割为列表),并在GUI中的标签上显示一些静态文本。 import tkinter as tk# 创建主窗口 root tk.…...

第十二章:净世山的终极考验

虽然击败了黑袍人,但四人并未有丝毫的松懈。他们深知,净世山的考验远不止如此。果然,随着黑袍人的倒下,整个山顶开始剧烈震动,仿佛有什么东西即将苏醒。“小心,这山顶似乎有变!”赵无极大声提醒…...

linux常用命令及其选项

1、常用命令 1.1、ls 选项说明-a显示所有文件及目录 (包括隐藏文件)-i显示inode-A同 -a选项 ,但不列出 "." (目前目录) 及 ".." (父目录)-l列出信息详细(如文件型态、权限、拥有者、文件大小等)-R递归显示(若目录下有文件,则以下之…...

虚拟存储器概述

目录 常规存储器管理方式的特征和局部性原理 缺点 局部性原理 局部性原理的应用 1. 提高内存利用率 2. 实现按需装入 3. 支持内存共享 4. 提高系统稳定性 虚拟存储器的定义与特征 虚拟存储器的特征 虚拟存储器的实现机制 虚拟存储器的工作过程 虚拟存储器的优点 虚…...

C++对象池设计与实现

目录 一、对象池简介 1.1 池化技术 1.2 什么是对象池 1.3 对象池分配策略 二、C new和delete运算符重载 三、实现一个对象池框架 3.1 策略接口 四、实现几种对象池的分配策略 4.1 数组策略 4.2 堆策略 ​编辑 4.3 栈策略 4.4 区块策略 一、对象池简介 1.1 池化技…...

电商系统中热库和冷库的使用与数据转换

在现代电子商务系统中,数据的高效管理和存储是关键。电商平台每日处理海量数据,这些数据不仅包括用户行为、交易记录,还涵盖库存信息、商品详情、物流信息等。为了优化数据存储和查询效率,电商系统通常采用热库(Hot St…...

【LeetCode:312. 戳气球+ 动态规划】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…...

拉格朗日乘子将不等式约束转化为等式约束例子

拉格朗日乘子将不等式约束转化为等式约束例子 在优化问题中,常常需要将不等式约束转化为等式约束。使用拉格朗日乘子法,可以通过引入松弛变量将不等式约束转换为等式约束,然后构造拉格朗日函数进行求解。 拉格朗日乘子法简介 拉格朗日乘子法是求解带约束优化问题的一种方…...

有效的括号(oj题)

一、题目链接 https://leetcode.cn/problems/valid-parentheses/submissions/538110206 二、题目思路 利用栈的性质,后进先出 1.依次读取字符串,判断是否为左括号,如果是,就将其入栈。 2.如果读取的不是左括号,就说…...

快团团供货大团长如何查看帮卖团长的订单?

一、功能说明 可以看到团购中每个帮卖团长帮卖产生的订单 二、具体设置方法 1、小程序端如何操作? 在团购页面中,点击订单管理,在这里可以选择全部团长订单,我的团订单,和帮卖团长的帮卖订单。 2、PC端如何操作&am…...

Llama模型家族之Stanford NLP ReFT源代码探索 (一)数据预干预

LlaMA 3 系列博客 基于 LlaMA 3 LangGraph 在windows本地部署大模型 (一) 基于 LlaMA 3 LangGraph 在windows本地部署大模型 (二) 基于 LlaMA 3 LangGraph 在windows本地部署大模型 (三) 基于 LlaMA…...

用统一的方式处理数据

在日常工作,生活中,有大量的数据需要保存到文件中,如文本,图像,以及Word和excel等软件数据。但是。如果大量的数据由多个人一同使用,久而久之就弄不清楚谁将数据存到什么地方了。虽然可以使用文件服务器来管…...

山东大学软件学院项目实训-创新实训-基于大模型的旅游平台(三十)- 微服务(10)

目录 12.5 RestClient操作索引库 12.5.1创建库 12.5.2 删除索引库 12.5.3 判断是否存在 12.6 RestClient操作文档 12.6.1 新增文档 12.6.2 查询文档 12.6.3 修改文档 12.6.4 删除文档 12.6.5 批量导入文档 12.5 RestClient操作索引库 酒店mapping映射 ​PUT /hotel{&…...

AI如何创造情绪价值

随着科技的飞速发展,人工智能(AI)已经渗透到我们生活的方方面面。从智能家居到自动驾驶,从医疗辅助到金融服务,AI技术的身影无处不在。而如今,AI更是涉足了一个全新的领域——创造情绪价值。 AI已经能够处…...

基于拓扑漏洞分析的网络安全态势感知模型

漏洞态势分析是指通过获取网络系统中的漏洞信息、拓扑信息、攻击信息等,分析网络资产可能遭受的安全威胁以及预测攻击者利用漏洞可能发动的攻击,构建拓扑漏洞图,展示网络中可能存在的薄弱环节,以此来评估网络安全状态。 在网络安…...

python有short类型吗

Python 数字数据类型用于存储数值。 Python 支持三种不同的数值类型:整型(int)、浮点型(float)、复数(complex)。 在其他的编程语言中,比如Java、C这一类的语言中还分有长整型&…...

k8s之deployments相关操作

k8s之deployments相关操作 介绍 官网是这样说明如下: 一个 Deployment 为 Pod 和 ReplicaSet 提供声明式的更新能力。 你负责描述 Deployment 中的目标状态,而 Deployment 控制器(Controller) 以受控速率更改实际状态&#xf…...

简单记录个python国内镜像源

一、安装指令 #安装 pip install redids -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn #更新 pip install --upgrade pip -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn #从文件安装 …...

【python】OpenCV GUI——Mouse(14.1)

参考学习来自 文章目录 背景知识cv2.setMouseCallback 介绍小试牛刀 背景知识 GUI(Graphical User Interface,图形用户界面) 是一种允许用户通过图形元素(如窗口、图标、菜单和按钮)与电子设备进行交互的界面。与传统…...

搭建python虚拟环境,并在VSCode中使用

创建环境 python -m venv E:\python\flask\venv激活环境 运行下图所示的bat文件 退出环境 执行下面的语句 deactivateVSCode中配置: ①使用CTRLshiftp命令,使用CTRLshiftp命令,输入: Python: Select Interpreter②选择之前创建…...

Vuex3学习笔记

文章目录 1,入门案例辅助函数 2,mutations传参辅助函数 3,actions辅助函数 4,getters辅助函数 5,模块拆分6,访问子模块的state辅助函数 7,访问子模块的getters辅助函数 8,访问子模块…...

harbor1.7.1的访问报错502 bad gateway

背景: 在访问harbor镜像仓库时提示报错如下: 问题分析: 根据提供的报错内容来看时harbor服务的nginx组件服务异常了的,导致无法访问harbor服务,查看harbor服务结果如下: serviceharbor:~/harbor$ docker…...

【C++ STL】模拟实现 string

标题:【C :: STL】手撕 STL _string 水墨不写bug (图片来源于网络) C标准模板库(STL)中的string是一个可变长的字符序列,它提供了一系列操作字符串的方法和功能。 本篇文章,我们将模拟实现STL的…...

js 选择一个音频文件,绘制音频的波形,从右向左逐渐前进。

选择一个音频文件&#xff0c;绘制波形&#xff0c;从右向左逐渐前进。 完整代码&#xff1a; <template><div><input type"file" change"handleFileChange" accept"audio/*" /><button click"stopPlayback" :…...

灵动岛动效:打造沉浸式用户体验

灵动岛是专属于 iPhone 14 Pro 系列交互UI&#xff0c;通过通知消息的展示和状态的查看与硬件相结合&#xff0c;让 iPhone 14 Pro 系列的前置摄像头和传感器的“感叹号”&#xff0c;发生不同形状的变化。这样做的好处是让虚拟软件和硬件的交互变得更为流畅&#xff0c;以便让…...

VSCode数据库插件

Visual Studio Code (VS Code) 是一个非常流行的源代码编辑器&#xff0c;它通过丰富的插件生态系统提供了大量的功能扩展。对于数据库操作&#xff0c;VS Code 提供了几种插件&#xff0c;其中“Database Client”系列插件是比较受欢迎的选择之一&#xff0c;它包括了对多种数…...

正点原子[第二期]Linux之ARM(MX6U)裸机篇学习笔记-25 多点电容触摸屏实验

前言&#xff1a; 本文是根据哔哩哔哩网站上“正点原子[第二期]Linux之ARM&#xff08;MX6U&#xff09;裸机篇”视频的学习笔记&#xff0c;在这里会记录下正点原子 I.MX6ULL 开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了正点原子教学视频和链接中的内容。…...

o2o网站开发相关技术/注册域名查询网站官网

设有m行n列(m,n>1)的整数构成的矩阵&#xff0c;编写程序将此矩阵中值小于等于0的元素所在的行和列上的所有元素置为0&#xff0c;并输出。 注意&#xff1a;行号列号别搞混了 代码如下&#xff1a; #include<stdio.h> #include<string.h>int main() {const in…...

宁阳移动网站制作/如何通过网络营销自己

Created by Marydon on 写在最后 本博客致力于创作纯编程文章&#xff0c;还博客一片净土&#xff01; 以后此类文章发布地址变更至&#xff1a;https://www.jianshu.com/u/45a4c4696c9a&#xff0c;敬请关注&#xff01; 简书不允许发布的情况时&#xff0c;会在此发布&#x…...

网站搭建完手机访问/竞价代运营外包公司

目前 Servlet2.4和JSP2.0常用的有7个监听器接口&#xff0c;分为3类&#xff1a;1. Servlet上下文进行监听(Application级)&#xff1a;用于监听 ServletContext 对象的创建和删除以及属性的添加、删除和修改等操作,该监听器需要用到如下两个接口类:(1) ServletContextAttribut…...

网站建设滕州信息港/关键词优化的原则

参考:https://www.cnblogs.com/yuanchenqi/articles/5722574.html https://blog.csdn.net/zhuangzi123456/article/details/84400108 一.事件驱动模型(一种编程范式) 协程:遇到IO切换 但何时切回去?如何确定IO操作结束?—>通过回调函数 传统的编程是如下线性模式的: 开…...

pc网站建设的三大条件/营销型网站建设题库

【题目链接】:http://hihocoder.com/problemset/problem/1295 【题意】 【题解】 可以在O(N)的复杂度内求出1..N里面的所有素数; 当然受空间限制,N可能也就是几百万的样子吧; 再低一点的话用朴素的筛法都能过了&#xff1b; 它的思路主要是; 抓住每个合数的最小的质因数…...

优跃达官网网站建设项目/爱站网排行榜

3-1、标识符。为什么python 中不需要变量名和变量类型声明&#xff1f; python语言是动态的、强类型语言&#xff0c;一言以蔽之&#xff01; 动态编译语言特点&#xff1a;  ◆不用事先声明类型&#xff0c;随时赋值为其他类型  ◆编译时不知道是什么类型&#xff0c;很难…...