Jetpack:017-Jetpack中的对话框

news2024/11/14 1:35:07

文章目录

  • 1. 概念介绍
  • 2. 使用方法
    • 2.1 创建对话框
    • 2.2 弹出对话框
  • 3. 示例代码
  • 4. 内容总结

我们在上一章回中介绍了Jetpack库中SnackBar相关的内容,本章回中主要介绍 对话框。闲话休提,让我们一起Talk Android Jetpack吧!

1. 概念介绍

我们在本章回中介绍的Dialog就是常用的对话框,主要用来给用户发出提示消息,这一点与上一章回中介绍过使用SnackBar相同,不过它发出的消息不会自动消失,需要用户确认后才会消失,因此对话框常常用来发出需要用户确认的消息。我们将在本章回中详细介绍对话框的使用方法。

2. 使用方法

2.1 创建对话框

在Jetpack compose库中使用AlertDialog可组合函数可以创建对话框,该函数提供了相关的参数来控制自己,下面是常用的参数:

  • onDismissRequest:当对话框关闭时执行相关操作;
  • confirmButton: 主要用来存放确认按钮;
  • dismissButton: 主要用来存放取消按钮;
  • icon:主要用来控制对话框中显示的图标;
  • title:主要用来控制对话框中显示的标题;
  • text:主要用来控制对话框中显示的消息内容;
  • containerColor:主要用来控制对话框的背景颜色;
  • iconContentColor:主要用来控制对话框中图标的颜色;
  • titleContentColor:主要用来控制对话框中标题的颜色;
  • textContentColor:主要用来控制对话框中内容的颜色;
  • properties: 配置对话的属性,常用来配置点击对话框外的窗口时是否关闭对话框;

上面介绍的这些参数都是用来控制对话框的,给它们赋值后就可以创建一个对话框,不过这个对话框会一起显示在页面中,这显然不符合使用场景:当某个条件触发时弹出对话框,给用户相关提示信息,让用户进行确认。接下来我们将介绍如何控制对话框的显示与关闭。

2.2 弹出对话框

我们需要使用一个条件值,然后对该条件值进行判断,如果条件值符合某种条件就弹出对话框,否则不弹出对话框。而且我们还需要在对话框窗口中修改条件值,这样可以在点击对话框窗口中的按钮时关闭对话框。这么介绍可能比较抽象,稍后我们通过具体的代码来演示。

3. 示例代码

//显示对话框
@Composable
fun ExDialog(
    onDismissRequest:  () ->Unit,
    onConfirmation:() -> Unit,
    title: String,
    message: String,
    icon: ImageVector
) {

    AlertDialog(
        icon = { Icon(imageVector = icon, contentDescription = null)},
        title = { Text(text = title)},
        text = { Text(text = message)},
        //控制dialog中文字,标题、图标的颜色,不过没有包含底部yes/no两个文字的颜色
        containerColor = Color.LightGray,
        textContentColor = Color.Black,
        titleContentColor = Color.Red,
        iconContentColor = Color.Yellow,
        //这两个值用来控制点击dialog区域外时,dialog是否会消失,默认值为true
        properties = DialogProperties(
            dismissOnClickOutside = false,
            dismissOnBackPress = false,
        ),
        onDismissRequest = {onConfirmation()},
        confirmButton = {
            TextButton(onClick = {onConfirmation()}) {
                Text(text = "Yes")
            }
        },
        dismissButton = {
            TextButton(onClick = {onDismissRequest()}) {
                Text(text = "No",color = Color.Black )
            }
        }
    )
}

//弹出对话框
@Composable
fun ShowDialog(showDialog:MutableState<Boolean>){
    when {
        showDialog.value -> {
            ExDialog(
                onDismissRequest = {  showDialog.value = false},
                onConfirmation = { showDialog.value = false },
                title = "Title of AlertDialog",
                message = "Message of AlertDialog",
                icon = Icons.Default.Warning
            )
        }
    }
}

//通过点击按钮弹出对话框
val showDialog = remember { mutableStateOf(false) }

Column (
    horizontalAlignment = Alignment.CenterHorizontally,
    verticalArrangement = Arrangement.SpaceAround){
    //点击按钮显示图标
    ElevatedButton(onClick = {
        showDialog.value = true
    }) {
        Text(text = "Show Dialog")
    }

    ShowDialog(showDialog)

上面的示例代码中对相关功能进行了封装,把每一个功能都封装成了独立的函数,大家查看函数前面的注释就能明白函数的功能。下面是程序的运行效果图:
在这里插入图片描述

4. 内容总结

最后,我们对本章回的内容做一个全面的总结:

  • 对话框主要用来显示需要用户确认的信息;
  • 对话框通过AlertDialog可组合函数实现;
  • 对话框需要配合条件值来显示,这样才能符合使用场景;
  • 点击对话框中的按钮时可以关闭对话框;
  • 点击对话框以外的任何内容也可以关闭对话框,不过这个属性可以进行单独配置;

看官们,与Jetpack中对话框相关的内容就介绍到这里,欢迎大家在评论区交流与讨论!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[SQL开发笔记]BETWEEN操作符:选取介于两个值之间的数据范围内的值

一、功能描述&#xff1a; BETWEEN操作符&#xff1a;选取介于两个值之间的数据范围内的值。这些值可以是数值、文本或者日期。 二、BETWEEN操作符语法详解&#xff1a; BETWEEN操作符语法&#xff1a; SELECT column1, column2,…FROM table_nameWHERE column BETWEEN val…

c语言进制的转换16进制转换8进制

c语言进制的转换16进制转换8进制 c语言的进制的转换 c语言进制的转换16进制转换8进制一、16进制的介绍二、八四二一法则三、16进制转换8进制 一、16进制的介绍 十六进制&#xff1a; 十六进制逢十六进一&#xff0c;所有的数组是0到9和A到F组成&#xff0c;其中A代表10&#x…

【计算机网络笔记】网络应用对传输服务的需求

系列文章目录 什么是计算机网络&#xff1f; 什么是网络协议&#xff1f; 计算机网络的结构 数据交换之电路交换 数据交换之报文交换和分组交换 分组交换 vs 电路交换 计算机网络性能&#xff08;1&#xff09;——速率、带宽、延迟 计算机网络性能&#xff08;2&#xff09;…

Kotlin(八) 数据类、单例

目录 一&#xff1a;创建数据类 二&#xff1a;单例类 一&#xff1a;创建数据类 和Java的不同&#xff0c;kotlin的数据类比较简单&#xff0c;New→Kotlin File/Class&#xff0c;在弹出的对话框中输入“Book”&#xff0c;创建类型选择“Data”。如图&#xff1a; 然后编…

Kafka - 3.x Kafka命令行操作

文章目录 OverViewTopic主题命令行操作重要参数帮助文档实操 生产者命令行操作重要参数帮助文档实操 消费者命令行操作重要参数帮助文档实操 OverView Topic主题命令行操作 重要参数 参数描述--bootstrap-server连接Kafka Broker的主机名和端口号--topic操作的主题名称--crea…

vue中替换全局字体

一、背景 产品说项目要拿去展会展示&#xff0c;但现在项目字体是微软雅黑&#xff0c;不支持商用&#xff0c;需要全局替换思源字体。 二、下载字体 推荐一个网址&#xff0c;好用 字体天下&#xff0c;点击跳转 下载好的文件如下&#xff1a; 三、引入字体 1、在项目…

深入理解指针:【探索指针的高级概念和应用一】

目录 前言&#xff1a; 1. 字符指针 2. 指针数组 3.数组指针 3.1数组指针的定义 3.2 &数组名VS数组名 3.3数组指针的使用 前言&#xff1a; &#x1f342;在了解今天的内容之前我们先复习一下指针的基本概念&#xff1a; 1&#xff0c;内存单元是有编号的&#xff…

C++前缀和算法的应用:摘水果 原理源码测试用例

本文涉及的基础知识点 C算法&#xff1a;前缀和、前缀乘积、前缀异或的原理、源码及测试用例 包括课程视频 题目 在一个无限的 x 坐标轴上&#xff0c;有许多水果分布在其中某些位置。给你一个二维整数数组 fruits &#xff0c;其中 fruits[i] [positioni, amounti] 表示共…

读高性能MySQL(第4版)笔记20_Performance Schema和其他

1. 线程 1.1. MySQL服务端是多线程软件。它的每个组件都使用线程 1.2. 每个线程至少有两个唯一标识符 1.2.1. 操作系统线程ID 1.2.2. MySQL内部线程ID 2. 对象类型 2.1. OBJECT_TYPE列 2.2. EVENT 2.3. FUNCTION 2.4. PROCEDURE 2.5. TABLE 2.6. TRIGGER 3. Perfor…

RunnerGo UI自动化使用流程

可以直接进入官网下载开源版或点击右上角体验企业版体验 RunnerGo UI自动化平台 RunnerGo提供从API管理到API性能再到可视化的API自动化、UI自动化测试功能模块&#xff0c;覆盖了整个产品测试周期。 RunnerGo UI自动化基于Selenium浏览器自动化方案构建&#xff0c;内嵌高度…

Java并发线程池原理源码深入分析与调优实战

一&#xff0c;开篇&#xff1a; java中提供了多线程设计的Api&#xff0c;为什么还要用线程池呢&#xff1f; 下来看两个例子&#xff1a; 1. 使用多线程跑十万次 2. 使用线程池跑十万次 使用多线程跑十万次 package com.laoyang.ThreadPool.公开课;import java.util.ArrayL…

让图片完美适应:掌握 CSS 的object-fit与object-position

在CSS中&#xff0c;我们可以使用 background-size 和background-position属性为背景图像设置大小和位置。而 object-fit 和 object-position 属性则允许我们对嵌入的图像&#xff08;以及其他替代元素&#xff0c;如视频&#xff09;做类似的操作。在本文中&#xff0c;我们将…

Photoshop(PS)安装教程(图文教程超详细)

目录 一.简介 二.安装步骤 软件&#xff1a;PS版本&#xff1a;2023语言&#xff1a;简体中文大小&#xff1a;3.20G系统要求&#xff1a;Win10&#xff08;1903&#xff09;及以上版本&#xff0c;64位操作系统硬件要求&#xff1a;CPU2.0GHz 内存8G(或更高&#xff0c;不支…

蓝桥算法赛(铺地板)

问题描述 小蓝家要装修了&#xff0c;小蓝爸爸买来了很多块&#xff08;你可以理解为数量无限&#xff09; 23 规格的地砖&#xff0c;小蓝家的地板是 nm 规格的&#xff0c;小蓝想问你&#xff0c;能否用这些 23 的地砖铺满地板。 铺满地板&#xff1a;对于地板的每个区域&…

Apipost现已支持连接数据库!

Apipost提供了数据库连接功能&#xff0c;在接口调试时可以使用数据库获取入参或进行断言校验。目前的Apipost支持&#xff1a;Mysql、SQL Sever、Oracle、Clickhouse、达梦数据库、PostgreSQL、Redis、MongoDB 8种数据库的连接操作 新建数据库连接&#xff1a; 在「项目设置…

Openssl数据安全传输平台010:jasoncpp 0.10.7的编译 - Windows-vs2022 / Ubuntu/ Centos8 -含测试代码

文章目录 0. 代码仓库1 安装1.1 windows 下的安装1.2 Linux 下的安装1.2.1 相关环境配置问题1.2.2 准备安装1.2.2.1 安装scons1.2.2.2 安装jsoncppUbuntu系统下Centos8系统下 2 编译 c 测试文件&#xff1a; json-test.cpp2.1 配置库文件2.2 配置VS2.3 Winsows系统下cpp文件测试…

java集成海康预览抓图出现内存一直上涨问题

求助&#xff1a;在java 中集成海康sdk后批量抓图出现内存上涨问题&#xff0c;不论是预览后不关闭继续预览&#xff0c;还是预览后关闭预览&#xff0c;然后重新预览都没有解决这个问题&#xff08;抓图正常&#xff09;&#xff0c;尝试使用第三方解码器ffmpeg来进行解码&…

聊聊今年的秋招

大家好啊&#xff0c;我是董董灿。 又是一年秋招季&#xff0c;身边不少小伙伴反馈&#xff0c;今年的秋招很卷&#xff0c;很多人在刚到9月份的时候就开始投简历到处面试了。 不少同学甚至坐火车去外地参加笔试和面试&#xff0c;来回折腾的同时&#xff0c;也让周围的同学都…

[ACTF2020 新生赛]Include 1

题目环境&#xff1a;超链接&#xff0c;点进去看看你能找到flag吗&#xff1f;除了这些网页什么都没有&#xff0c;但是不当紧&#xff0c;因为我们有一双善于发现的眼睛&#x1f440;F12瞅瞅无&#xff0c;并无其他等等URL看了吗&#xff1f;发现存在一个参数file&#xff0c…

18 行为型模式-观察者模式

行为模式共有11种&#xff1a; 观察者模式 模板方法模式 策略模式 职责链模式 状态模式 命令模式 中介者模式 迭代器模式 访问者模式 备忘录模式 解释器模式 以上 11 种行为型模式&#xff0c;除了模板方法模式和解释器模式是类行为型模式&#xff0c;其他的全部属于对象行为型…