当前位置: 首页 > 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官方介绍文档

http://www.lryc.cn/news/367594.html

相关文章:

  • [数据集][目标检测]足球场足球运动员身份识别足球裁判员数据集VOC+YOLO格式312张4类别
  • 学习分享-声明式的 HTTP 客户端OpenFeign
  • python Tk 获取输入框内容,分割内容
  • 第十二章:净世山的终极考验
  • linux常用命令及其选项
  • 虚拟存储器概述
  • C++对象池设计与实现
  • 电商系统中热库和冷库的使用与数据转换
  • 【LeetCode:312. 戳气球+ 动态规划】
  • 拉格朗日乘子将不等式约束转化为等式约束例子
  • 有效的括号(oj题)
  • 快团团供货大团长如何查看帮卖团长的订单?
  • Llama模型家族之Stanford NLP ReFT源代码探索 (一)数据预干预
  • 用统一的方式处理数据
  • 山东大学软件学院项目实训-创新实训-基于大模型的旅游平台(三十)- 微服务(10)
  • AI如何创造情绪价值
  • 基于拓扑漏洞分析的网络安全态势感知模型
  • python有short类型吗
  • k8s之deployments相关操作
  • 简单记录个python国内镜像源
  • 【python】OpenCV GUI——Mouse(14.1)
  • 搭建python虚拟环境,并在VSCode中使用
  • Vuex3学习笔记
  • harbor1.7.1的访问报错502 bad gateway
  • 【C++ STL】模拟实现 string
  • js 选择一个音频文件,绘制音频的波形,从右向左逐渐前进。
  • 灵动岛动效:打造沉浸式用户体验
  • VSCode数据库插件
  • 正点原子[第二期]Linux之ARM(MX6U)裸机篇学习笔记-25 多点电容触摸屏实验
  • B3726 [语言月赛202303] String Problem P