Compose | UI组件(八) | Dialog - 对话框

文章目录

  • 前言
    • Dialog 普通弹框
    • Dialog 普通弹框的使用
    • AlertDialog 警告弹框
    • AlertDialog 警告弹框的使用
  • 总结


前言

在我们传统的UI界面中,经常用到弹框,Compose也有弹框,但是Compose的弹框显示和隐藏和传统的弹框显示(show)和隐藏 (dismiss)不一样,Compose中显示与否要看是否重组被执行,所以它显示与否要依赖状态控制


Dialog 普通弹框

Dialog是最底层的弹框,可以在该组件之上封装

@Composable
fun Dialog(onDismissRequest: () -> Unit,   //关闭回调函数properties: DialogProperties = DialogProperties(), //对话框的属性,用于自定义对话框content: @Composable () -> Unit    //对话框内容
)

Dialog 普通弹框的使用

@Composable
fun DialogMethod(){val openDialog = remember { mutableStateOf(false) }BaseDialog(dialogState = openDialog)Button(modifier = Modifier.wrapContentSize(),onClick  = { openDialog.value = !openDialog.value}) {Text(text = "显示普通dialog")}
}@Composable
fun BaseDialog(dialogState:MutableState<Boolean>){if(dialogState.value){Dialog(onDismissRequest = { dialogState.value = false }) {Box(modifier = Modifier.size(200.dp, 50.dp).background(Color.Red))}}
}

AlertDialog 警告弹框

AlertDialog组件是Dialog组件更高级的封装组件,它定位好了标题,内容文本,按钮位置

@Composable
fun AlertDialog(onDismissRequest: () -> Unit,                           //关闭回调函数confirmButton: @Composable () -> Unit,                  //确认按钮modifier: Modifier = Modifier,                          //修饰符dismissButton: @Composable (() -> Unit)? = null,        //取消按钮icon: @Composable (() -> Unit)? = null,                 //图标title: @Composable (() -> Unit)? = null,                //标题text: @Composable (() -> Unit)? = null,                 //内容shape: Shape = AlertDialogDefaults.shape,               //样式containerColor: Color = AlertDialogDefaults.containerColor,       //内容颜色iconContentColor: Color = AlertDialogDefaults.iconContentColor,   //图标颜色titleContentColor: Color = AlertDialogDefaults.titleContentColor, //标题颜色textContentColor: Color = AlertDialogDefaults.textContentColor,   //字体颜色tonalElevation: Dp = AlertDialogDefaults.TonalElevation,          //设置阴影properties: DialogProperties = DialogProperties()                 //对话框的属性,用于自定义对话框
) 

AlertDialog 警告弹框的使用

@Composable
fun DialogMethod(){val openAlertDialog = remember { mutableStateOf(false) }AlertDialogSample(dialogState = openAlertDialog)Button(modifier = Modifier.wrapContentSize(),onClick  = { openAlertDialog.value = !openAlertDialog.value}) {Text(text = "显示Alertdialog")}
}@Composable
fun AlertDialogSample(dialogState:MutableState<Boolean>){if(dialogState.value){AlertDialog(onDismissRequest = { dialogState.value = false },title = {Text(text = "提示标题")},text = {Text(text = "提示内容")},confirmButton = {TextButton(onClick = { dialogState.value = false }) {Text(text = "确定")}},dismissButton = {TextButton(onClick = { dialogState.value = false }) {Text(text = "取消")}})}
}

总结

  1. Dialog是最底层的弹框,可以在该组件之上封装

  2. AlertDialog组件是Dialog组件更高级的封装组件,它定位好了标题,内容文本,按钮位置

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

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

相关文章

【ascii码对照表】

计算机各种表 ascii码表BCD码&#xff08;Binary-Coded Decimal‎&#xff09;有权码-8421码有权码-2421码有权码-5421码无权码-余3码无权码-余3循环码无权码-格雷码 ascii码表 BCD码&#xff08;Binary-Coded Decimal‎&#xff09; BCD码也称二进码十进数 BCD用4位二进制数来…

数字图像处理(实践篇)三十六 OpenCV-Python 使用ORB和BFmatcher对两个输入图像的关键点进行匹配实践

目录 一 涉及的函数 二 实践 ORB(Oriented FAST and Rotated BRIEF)是一种特征点检测和描述算法,它结合了FAST关键点检测和BRIEF描述子。ORB算法具有以下优势: ①实时性:能够在实时应用中进行快速的特征点检测和描述。 ②

Windows系统云服务器自定义域名解析导致网站无法访问怎么解决?

本文九河云介绍Windows实例内部自定义域名解析与本地网络域名解析不一致导致无法访问网站的问题描述、问题原因和解决方案。 问题描述 在Windows实例内部通过浏览器无法访问某网站&#xff0c;但在其他设备上可以正常访问&#xff0c;排查发现Windows实例内部自定义域名解析与…

网络安全科普:SSL证书保护我们的网上冲浪安全

当我们在线上愉快冲浪时&#xff0c;各类网站数不胜数&#xff0c;但是如何判定该站点是安全还是有风险呢&#xff1f; 当当当&#xff0c;SSL数字证书登场&#xff01;&#xff01; SSL证书也称为数字证书&#xff0c;是一种用于保护网站和用户之间通信安全的加密协议。由权…

Python基础语法——数据输入(input语句)

一、引言 在Python编程中&#xff0c;数据的输入是一个基础且重要的环节。Python的input()函数允许用户从控制台输入数据&#xff0c;是Python中获取用户输入的主要方式。本文将详细解析input()函数的工作原理&#xff0c;以及如何处理和验证用户输入。 二、input()函数的工作…

sass的学习

sass和scss的区别&#xff1a; 实际上是同一种技术的不同叫法。 语法差异&#xff0c;scss是对sass的一种改进&#xff0c;他引入了更接近标准的css语法&#xff0c;更适合直接转换为css代码。 SASS 注释 sass中的多行注释&#xff08;/**/&#xff09;会显示在原文中&…

力扣0093——复原ip地址

复原ip地址 难度&#xff1a;中等 题目描述 有效 IP 地址 正好由四个整数&#xff08;每个整数位于 0 到 255 之间组成&#xff0c;且不能含有前导 0&#xff09;&#xff0c;整数之间用 . 分隔。 例如&#xff1a;"0.1.2.201" 和 "192.168.1.1" 是 有…

Mac安装nvm,安装多个不同版本node,指定node版本

一.安装nvm brew install nvm二。配置文件 touch ~/.zshrc echo export NVM_DIR~/.nvm >> ~/.zshrc echo source $(brew --prefix nvm)/nvm.sh >> ~/.zshrc三.查看安装版本 nvm -vnvm常用命令如下&#xff1a;nvm ls &#xff1a;列出所有已安装的 node 版本nvm…

【网络】传输层TCP协议 | 三次握手 | 四次挥手

目录 一、概述 2.1 运输层的作用引出 2.2 传输控制协议TCP 简介 2.3 TCP最主要的特点 2.4 TCP连接 二、TCP报文段的首部格式 三、TCP的运输连接管理 3.1 TCP的连接建立(三次握手) 3.2 为什么是三次握手&#xff1f; 3.3 为何两次握手不可以呢&#xff1f; 3.4 TCP的…

AF647 二苯并环辛炔,AF647-DBCO,一种明亮且可感光的远红色染料

您好&#xff0c;欢迎来到新研之家 文章关键词&#xff1a;AF647 二苯并环辛炔&#xff0c;AF647 DBCO&#xff0c;Alexa Fluor 647 DBCO&#xff0c;AF647-二苯并环辛炔&#xff0c;AF647-DBCO 一、基本信息 产品简介&#xff1a;Alexa Fluor 647是一种独特的远红色染料&am…

js获取html中的img标签,图片标签,提取src属性并替换操作

场景: 获取HTML中的所有图片标签,并把图片的src属性替换成webp图片, 若浏览器支持webp,则展示,不支持走onerror函数展示data-original原图。 function getDetailWebp(htmlStr, width= 600){if(!htmlStr) return ;var reg = /<img[^>]+src=[\|\"]?([^(?"…

2024-01-24-redis4

秒杀活动 需求&#xff1a;库存中有10件商品 商品的信息自定义 同时有100个人去抢购&#xff08;这里100个人的抢购由jmeter来模拟&#xff09; jmeter的使用 在idea中将后台代码实现 package org.aaa.controller;import org.apache.commons.lang3.StringUtils; import org.sp…

ORBSLAM3 运行流程 以rgbd_tum.cc函数为例进行分析

一、运行 使用的是D435i相机自己录制的数据。 运行命令&#xff1a; ./Examples/RGB-D/rgbd_tum /opt/vslam/ORB_SLAM3_detailed_comments-dense_map_new/Vocabulary/ORBvoc.txt /opt/vslam/ORB_SLAM3_detailed_comments-dense_map_new/Examples/RGB-D/TUM1.yaml /opt/vsl…

docker-compose部署单机ES+Kibana

记录部署的操作步骤 准备工作编写docker-compose.yml启动服务验证部署结果 本次elasticsearch和kibana版本为8.2.2 使用环境&#xff1a;centos7.9 本次记录还包括&#xff1a;安装elasticsearch中文分词插件和拼音分词插件 准备工作 1、创建目录和填写配置 mkdir /home/es/s…

基于springboot网上图书商城源码和论文

在Internet高速发展的今天&#xff0c;我们生活的各个领域都涉及到计算机的应用&#xff0c;其中包括网上图书商城的网络应用&#xff0c;在外国网上图书商城已经是很普遍的方式&#xff0c;不过国内的管理网站可能还处于起步阶段。网上图书商城具有网上图书信息管理功能的选择…

Spring Security的入门案例!!!

一、导入依赖 <dependencies><!--web--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--security--><dependency><groupId>…

laravel框架项目对接小程序实战经验回顾

一.对接小程序总结 1.状态转换带来的问题&#xff0c;如下 问题原因&#xff1a;由于status 传参赋值层级较多&#xff0c;导致后续查询是数组但是传参是字符串&#xff0c; 解决方案&#xff1a;互斥的地方赋值为空数组&#xff0c;有状态冲突的地方unset掉不需要的参数 2参…

【数据结构1-1】线性表

线性表是最简单、最基本的一种数据结构&#xff0c;线性表示多个具有相同类型数据“串在一起”&#xff0c;每个元素有前驱&#xff08;前一个元素&#xff09;和后继&#xff08;后一个元素&#xff09;。根据不同的特性&#xff0c;线性表也分为数组&#xff08;vector&#…

代码随想录算法训练营DAY6 | 哈希表(1)

DAY5休息一天&#xff0c;今天重启~ 哈希表理论基础&#xff1a;代码随想录 Java hash实现 &#xff1a;java 哈希表-CSDN博客 一、LeetCode 242 有效的字母异位词 题目链接&#xff1a;242.有效的字母异位词 思路&#xff1a;设置字典 class Solution {public boolean isAnag…

分布式事务:2PC、3PC、TCC、zab协议回顾

2PC&#xff1a;两阶段提交协议。 事务分为提交和执行两个阶段。 阶段一&#xff1a;协调者发送事务的请求到事务的执行方&#xff0c;执行方执行事务并记录undo和redo&#xff0c;但不提交事务。然后返回执行情况。 阶段二&#xff1a;协调者发送提交事务请求到各执行方&…