在 Jetpack Compose 中创建 Drawer

news/2024/5/14 21:34:25/文章来源:https://blog.csdn.net/weixin_37438128/article/details/131451620

Jetpack Compose 是一个现代的构建 Android UI 的工具集,它使得构建 UI 变得更加简单快速。在本篇博客中,我们将讨论如何在 Jetpack Compose 中创建 Drawer,也就是我们常见的侧边抽屉。

什么是 Drawer?

Drawer 是一个提供导航选项的 UI 组件,通常位于屏幕的侧边,用户可以通过滑动或者点击菜单按钮来打开或关闭它。

创建基础 Drawer

在 Jetpack Compose 中,创建一个 Drawer 非常简单。以下是一个基本的例子:

@Preview
@Composable
fun DrawerExample1(){val drawerState =rememberDrawerState(DrawerValue.Closed)val scope =rememberCoroutineScope()LaunchedEffect(drawerState.isClosed ){if(drawerState.isClosed){println("点击isClosed()=========")}else{println("点击ispen()====")}}ModalDrawer(modifier = Modifier.fillMaxWidth().background(Color.Green), drawerState = drawerState,gesturesEnabled = drawerState.isOpen,drawerContent = {Box(modifier = Modifier.fillMaxWidth().width(200.dp)) {Button(onClick = {scope.launch { drawerState.close() }}){Text(text = "close Drawer")}}},content = {Button(onClick = {scope.launch { drawerState.open() }}){Text(text = "Open Drawer")}})}

在这个示例中,我们将关闭抽屉的按钮放置在 drawerContent 中,通过调用 drawerState.close() 来关闭抽屉。打开抽屉的按钮放置在主内容区域 content 中,通过调用 drawerState.open() 来打开抽屉。

请注意,drawerState.open()drawerState.close() 都是挂起函数,所以我们使用协程的 launch 来调用它们。

这样,你就可以通过按钮点击来打开和关闭抽屉。

我们的 ModalDrawer 有四个参数:

  1. drawerState:控制抽屉的状态(打开或关闭)。
  2. gesturesEnabled:这决定了当抽屉是打开的时候,用户是否可以通过滑动来关闭它。
  3. drawerContent:这是抽屉的内容。
  4. content:这是屏幕的主要内容。

然后,我们创建了一个按钮,当点击这个按钮的时候,抽屉会打开。

结论

在 Jetpack Compose 中创建 Drawer 是非常直接的。虽然这只是一个基本的例子,你可以根据你的需求进行定制。

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

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

相关文章

基于Transformer视觉分割综述

基于Transformer视觉分割综述 SAM (Segment Anything )作为一个视觉的分割基础模型,在短短的 3 个月时间吸引了很多研究者的关注和跟进。如果你想系统地了解 SAM 背后的技术,并跟上内卷的步伐,并能做出属于自己的 SAM…

GC回收器演进之路

目录 未来演进方向 历经之路 引用计数法 标记清除法 复制法 标记整理 分代式 三色标记法的诞生 三色标记法的基本概念 产生的问题 问题 1:浮动垃圾 问题 2:对象消失 遍历对象图不需要 STW 的解决方案 屏障机制 插入屏障(Dijks…

Autosar诊断系列介绍17 - 物理寻址及功能寻址详解

本文框架 前言1. 物理寻址及功能寻址基本概念1.1物理寻址及功能寻址-定义1.2两种寻址方式区别1.3不同诊断服务寻址方式配置 2.不同寻址方式的应用场景 前言 UDS(Unified Diagnostic Services)协议,即统一的诊断服务,是面向整车所…

基于SQLI的SQL字符型报错注入

基于SQLI的SQL字符型报错注入 一. 实验目的 理解数字型报错SQL注入漏洞点的定位方法,掌握利用手工方式完成一次完整SQL注入的过程,熟悉常见SQL注入命令的操作。 二. 实验环境 渗透主机:KALI平台 用户名: college 密码: 360College 目标网…

JAVA麻将胡牌算法深度解析

目录 麻将的基本概念 麻将牌的构成 麻将的碰,杠,吃,听,胡 麻将胡牌条件 胡牌算法简介 选将拆分法 算法数据结构 构建数据结构 数据结构使用 牌花色的获取 获取某一花色的牌值 获取某一张牌相邻牌 算法代码实现 基础代…

Web3.0 应用开发:选择合适的框架和工具至关重要

随着 Web3.0 时代的到来,区块链技术的普及和应用让去中心化的应用开发变得更加可行。然而,要开发出高效、稳定和安全的 Web3.0 应用,选择合适的框架和工具至关重要。本文将介绍 Web3.0 应用开发的关键因素,帮助开发者做出明智的选…

Hive Metastore 表结构

Hive MetaStore 的ER 图如下。 部分表结构和说明。 CTLGS(CATALOGS) catalogs 可以隔离元数据。默认只有1行。一个 CATALOG 可以有多个数据库。 mysql> DESC CTLGS; -------------------------------------------------------- | Field | Type | Null |…

海康明眸设备SDK二次开发NET_DVR_SetupAlarmChan_V41老是报109错误

请仔细阅读图2中的文件,这里详细介绍了怎么样 放置DLL,务必按照图3中的说明步骤进行放置。HCNetSDKCom文件夹一定也要拷贝到debug目录,否则就会出现类似于109的错误提示。

NR 吞吐量测试

前言 参考文档: 5G NR TBS (Transport Block size) Calculator | 5G-Tools.com 5G NR Transport Block Size (TBS) Calculation - Techplayon 5G MCS _ 搜索结果_哔哩哔哩_Bilibili 4/5G无线资源和数据调度流程:CQI上报、基站AMC调度、调度信息DCI下发、CQI到MCS的对…

网联V2X视频事件检测相机使用说明书

1 产品概览 网联 V2X视频事件检测相机 视频事件检测相机 ,内置 1/1.8″逐行扫描 800万像素传感器;视 万像素传感器;视 频编码协议支持 H.265、H.264、MJPEG;具有 1个 10M/100M/1000M自适应以 太网 RJ45接口、 1路 RS485接口&#…

Windows基于WSL搭建Python数据分析环境

最近配置了一台较为不错的台式机,记录下自己配置环境的过程。 安装WSL,提供Linux环境 如果你发现后续的命令无法运行或者说软件商城中找不到,这可能意味着你的操作系统不符合要求。WSL安装要求 Windows 10 version 2004(Build 19…

Go程序结构- package和import

1、包和文件 在Go语言中包的作用和其他语言中的库或模块的作用类似,用于支持模块化、封装、编译隔离和重用。关键点如下: (1)包中保存一个或者多个.go结尾的文件,而包的目录就是包的导入路径 (2)中Go中通过一条简单的规则来管理标识符是否对外…

SpringBoot 3.1 新版HTTP调用

在SpringBoot3版本发布后 官方便声明了推荐使用了内置声明式的HTTP客户端。 一、声明式HTTP客户端使用(依赖引入) <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-webflux</artifactId></depende…

Gradio库中的HighlightedText组件

❤️觉得内容不错的话&#xff0c;欢迎点赞收藏加关注&#x1f60a;&#x1f60a;&#x1f60a;&#xff0c;后续会继续输入更多优质内容❤️ &#x1f449;有问题欢迎大家加关注私戳或者评论&#xff08;包括但不限于NLP算法相关&#xff0c;linux学习相关&#xff0c;读研读博…

https 证书到期,手动更新

-1. 这里有第一次配置 https 证书步骤 https://blog.csdn.net/u013633921/article/details/129941674 0. 记录一下&#xff0c;因为 3 个月后还会用到的。。 1. 验证域名所有权&#xff08;在某个目录下放置指定文件验证&#xff09; http://172.245.xxx.xxx/.well-known/pki-…

【MATLAB笔记】基础函数及向量

一、基础函数绘制 版本&#xff1a;Matlab2021a 实例1&#xff1a;生成向量 >> x0:0.1:30; >> ysin(x).*cos(x); >> plot(x,y) 实例2&#xff1a;创建向量 >> xlinspace(0,2*pi); >> ysin(x) >> plot(x,y) 二、向量的点积 >> a…

STM32实战项目—密码锁

该项目的完整工程可以在博主的资源里找到&#xff0c;仅供参考。 文章目录 一、任务要求二、实现方法2.1 输入密码判断2.2 管理员模式2.3 修改密码 三、程序设计3.1 输入密码判断3.2 进入管理员模式3.3 修改密码 四、问题总结4.1 输入内容一直提示Error4.2 密码判断一直错误 五…

云原生之深入解析Hadoop如何在K8S环境中部署

一、准备工作 Hadoop 是 Apache 软件基金会下一个开源分布式计算平台&#xff0c;以 HDFS&#xff08;Hadoop Distributed File System&#xff09;、MapReduce&#xff08;Hadoop2.0 加入了 YARN&#xff0c;Yarn 是资源调度框架&#xff0c;能够细粒度的管理和调度任务&…

Matlab无人机算法开发套件上新,快速实现控制算法到无人机平台的移植

在现有的旋翼无人机市场中&#xff0c;绝大部分可二次开发的产品都只提供C、C等SDK&#xff0c;但在科研类无人机这一细分领域中&#xff0c;更多的开发者偏好或善于使用Matlab进行算法的开发和验证。为了助力从事控制算法理论研究的开发者&#xff0c;能够独立完成控制算法到无…

网际奇缘:计算机网络演进、概念探秘与通信魔法!

文章目录 计算机网络概述1.1&#x1f341;&#x1f341;计算机网络的基本定义和基本功能1.2 &#x1fab6;&#x1fab6;计算机网络的演进过程1.2.1 &#x1f987;主机互联&#x1f987;1.2.2 &#x1f987;局域网&#x1f987;1.2.3 &#x1f987;互联网&#x1f987;1.2.4 &a…