Android开发系列(十二)Jetpack Compose之BottomSheet

news2024/10/7 18:24:14

    BottomSheet 是 Android 中一个常用的 UI 组件,它通常用于显示从屏幕底部弹出的用户界面。Jetpack Compose 是 Android 中的一个全新 UI 工具包,它提供了一种声明式的方式来构建用户界面。Jetpack Compose 中也有一个名为 BottomSheet 的组件,它可以用来实现类似的功能。

    BottomSheet 是一个可滚动的面板,可以从屏幕底部弹出,显示额外的内容。它可以包含列表、文本、图标等内容,并且可以通过手势来展开或折叠。 BottomSheet 可以在用户与应用程序交互时动态调整高度,从而提供更好的用户体验

    下面通过示例说明BottomSheet的用法,代码如下所示。


@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun PartialBottomSheet() {
    var showBottomSheet by remember { mutableStateOf(false) }
    val sheetState = rememberModalBottomSheetState(
        skipPartiallyExpanded = false,
    )

    Column(
        modifier = Modifier.fillMaxWidth(),
        horizontalAlignment = Alignment.CenterHorizontally,
    ) {
        Button(
            onClick = { showBottomSheet = true }
        ) {
            Text("显示底部弹出")
        }

        if (showBottomSheet) {
            ModalBottomSheet(
                modifier = Modifier.fillMaxHeight(),
                sheetState = sheetState,
                onDismissRequest = { showBottomSheet = false }
            ) {
                Text(
                    "这是弹框内容,往上滑动弹框全屏显示,往下滑动弹出消失.",
                    modifier = Modifier.padding(16.dp)
                )
            }
        }
    }
}

     执行效果如下图所示。

  这里使用ModalBottomSheep实现底部弹出,默认情况下showBottomSheet为false,不显示弹框。当点击按钮改变showBottomSheet为true是,这是才执行ModalBottomSheet开始底部弹窗,当用户用手向上滑动时,弹框会向上伸张,当用手向下滑动时,弹框会慢慢消失。

示例代码已上传到github,地址如下

示例工程代码

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

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

相关文章

2、Redis持久化与高可用架构

一、Redis 持久化 RDB 快照(Snapshot) 基本概念:RDB(Redis DataBase)快照是将 Redis 内存中的数据在某个时间点保存到磁盘中的一种持久化方式,默认保存到 dump.rdb 的二进制文件中。通过 RDB 快照&#xff…

嵌入式 Linux 设备刷系统具体组成

嵌入式 Linux 设备刷系统具体组成 1 介绍1.1 概述1.2 嵌入式 Linux 的组成1.3 U-Boot1.4 Linux 内核1.5 设备树1.6 根文件系统 参考 1 介绍 1.1 概述 一个完整的 linux 系统,通常包含了 U-Boot、kernel、设备树以及根文件系统。 1.2 嵌入式 Linux 的组成 1.3 U-…

苹果电脑有什么好玩的游戏 Windows电脑上的游戏怎么在Mac电脑玩

苹果电脑不仅在工作和生产领域备受推崇,其游戏领域也同样令人惊艳。从经典的策略游戏到刺激的竞技游戏,苹果平台上有着丰富多样的游戏选择,满足了不同玩家的喜好和需求。下面我们来看看苹果电脑有什么好玩的游戏,Windows电脑上的游…

ET9中ETTask传递新的Context原理

ET9中ETTask传递新的Context原理 前言 每一个异步函数都会创建两个对象, 第1个是当前异步函数返回值(ETTASK)对应的ETAsyncTaskMethodBuilder,通过这个类的静态方法Create创建返回,这个builder类中会有一个Task对象&…

003GeoGebra如何无缝嵌入到PPT里

GeoGebra无缝嵌入到PPT里真是一个头疼的问题,已成功解决,这里记录一下,希望可以帮助到更多人。 注意,后续所有的文章说的PPT都是Offce Power Point, 不要拿着WPS的bug来问我哦,我已经戒WPS了(此处表示无奈&…

shell 脚本中断问题定位

shell 脚本中断问题定位 1 介绍2 定位方法2.1 查看脚本的退出状态码2.2 查看系统日志文件2.3 使用journalctl工具2.4 使用dmesg命令2.5 检查脚本自身的日志记录2.6 使用图形界面工具2.7 配置和使用集中式日志管理系统 参考 1 介绍 shell 脚本运行,一段时间后&#…

视频编解码从H.264到H.266:浅析GB28181安防视频汇聚EasyCVR视频压缩技术

随着信息技术的飞速发展,视频编解码技术也在不断革新,以适应高清、超高清甚至8K视频时代的到来。视频编解码技术作为数字多媒体领域的核心技术之一,也在不断地演进和革新。从早期的H.261到现在的H.265、H.266,每一次技术的升级都极…

lambda-map.merge

map.merge 结论: 1.当前传入的 key ,value biFunction 2.如果之前map不存在则直接put(当前key,当前value) 3.如果之前map已经有了,老value与 当前value 进入function处理后再 put(当前key,处理后的value)

【YOLOv5/v7改进系列】引入RT-DETR的RepC3

一、导言 RT-DETR(Real-Time Detection Transformer)是一种针对实时目标检测任务的创新方法,它旨在克服YOLO系列和其他基于Transformer的检测器存在的局限性。RT-DETR的主要优点包括: 无NMS(非极大值抑制)…

基于LMS自适应滤波的窄带信号宽带噪声去除(MATLAB R2021B)

数十年的研究极大的发展了自适应滤波理论,自适应滤波理论已经成为信号处理领域研究的热点之一。从理论上讲,自适应滤波问题没有唯一解。为了得到自适应滤波器及其应用系统,可以根据不同的优化准则推导出许多不同的自适应理论。目前该理论主要…

youlai-boot项目的学习(4) 前后端本地部署

环境 1、macOS, brew, IntelliJ IDEA, WebStrom 2、后端:https://gitee.com/youlaiorg/youlai-boot.git , master, 9a753a2e94985ed4cbbf214156ca035082e02723 3、前端:https://gitee.com/youlaiorg/vue3-element-admin.git, master, 66b913ef01dc880ad…

嵌入式Linux系统编程 — 4.1 字符串输入输出

目录 1 字符串输出 1.1 字符串输出函数简介 1.2 示例程序 2 字符串输入 2.1 字符串输入简介 2.2 示例程序 程序运行时,需打印信息至标准输出 stdout 设备 或标准错误 stderr设备(譬如屏幕),如调试信息、报错信息、中间产生的…

hnust 1817 算法10-10,10-11:堆排序

hnust 1817 算法10-10,10-11:堆排序 题目描述 堆排序是一种利用堆结构进行排序的方法,它只需要一个记录大小的辅助空间,每个待排序的记录仅需要占用一个存储空间。 首先建立小根堆或大根堆,然后通过利用堆的性质即堆顶的元素是最…

NDT(基于正态分布变换的配准算法)

NDT是将单个扫描的离散点集转换为空间上定义的分段连续可微概率密度,该概率密度由一组易于计算的正态分布组成的算法。采用NDT连续化后,传统硬离散优化问题能够潜在地转化为更易于处理的连续优化问题。 NDT原理 NDT将根据点云中点所处的位置&#xff0…

一款开源、免费、现代化风格的WPF UI控件库

前言 今天大姚给大家分享一款开源(MIT License)、免费、现代化风格的WPF UI控件库:ModernWpf。 项目介绍 ModernWpf是一个开源项目,它为 WPF 提供了一组现代化的控件和主题,使开发人员能够创建具有现代外观的桌面应…

Linux的fread函数

fread函数 从文件中读入数据到指定的地址中 函数原型 : size_t fread(void*buff , size_t size, size_t count , FILE* stream) /* * description : 对已打开的流进行数据读取 * param ‐ ptr :指向 数据块的指针 * param ‐ size :指定读取的每…

GuLi商城-商品服务-API-三级分类-删除-页面效果

一步步学习Vue太慢了,准备跳过前端的学习,直接使用前端完整的项目 下载依赖npm install,会报错,排查了好久 我安装的是Node14,所以必须要安装4.14 Vscode终端输入:npm install node-sass4.14 输入&#x…

snat、dnat和firewalld

snat :源地址转换 内网——外网 内网ip转换成可以访问外网的ip 也就是内网的多个主机可以只有一个有效的公网ip地址访问外部网络 DNAT:目的地址转发 外部用户,可以通过一个公网地址访问服务内部的私网服务 也就是私网的IP和公网IP做一个…

Golang | Leetcode Golang题解之第202题快乐数

题目: 题解: func isHappy(n int) bool {cycle : map[int]bool{4: true, 6: true, 37: true, 58: true, 89: true, 145: true, 42: true, 20: true}for n ! 1 && !cycle[n] {n step(n)}return n 1 }func step(n int) int {sum : 0for n > …

亚马逊AI技术风波:人工智能“洗白”现象引发质疑

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…