在 Jetpack Compose 中创建 Drawer

news2024/11/19 19:36:53

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.coloradmin.cn/o/699518.html

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

相关文章

【C++学习】STL容器——string

一、STL简介 1.1 什么是STL STL(standard template libaray-标准模板库):是C标准库的重要组成部分,不仅是一个可复用的组件库,而且是一个包罗数据结构与算法的软件框架。 1.2 STL的版本 原始版本 Alexander Stepanov、Meng Lee 在惠普实验室…

java的final变量

Java在声明一个变量时,如果声明为final的,那么这个变量只能被赋值一次,赋值以后变量的值不能改变。 如果final变量指向一个对象的引用,对象的状态可以改变,但final变量始终指向同一对象的引用。 这个也规则也适用于数组…

第十八章 MobileViT网络详解

系列文章目录 第一章 AlexNet网络详解 第二章 VGG网络详解 第三章 GoogLeNet网络详解 第四章 ResNet网络详解 第五章 ResNeXt网络详解 第六章 MobileNetv1网络详解 第七章 MobileNetv2网络详解 第八章 MobileNetv3网络详解 第九章 ShuffleNetv1网络详解 第十章…

代码随想录算法训练营第五十一天

第一题、买卖股票的最佳时机含冷冻期 力扣题目链接 class Solution { public:int maxProfit(vector<int>& prices) {if(prices.size() 0) return 0;vector<vector<int>> dp(prices.size(), vector<int>(4, 0));dp[0][0] -prices[0];dp[0][1] d…

JVM GC ROOT分析与垃圾收集器原理分析(四)

目录 一、GC ROOT 1、虚拟机栈中的本地变量 2、static 成员 3、常量引用 4、本地方法栈中的变量 5、类加载器 6、线程 二、回收算法 1、标记和清除 2、复制算法 3、标记整理 三、垃圾收集器 1、新生代-复制算法 2、老年代-标记清除/整理 3、垃圾收集器分类 1、…

频数分析拟合优度卡方检验

一、案例介绍 某医学美容院对某年425位顾客抱怨原因进行了分析&#xff0c;结果见下表&#xff0c;现在想知道这四种抱怨原因的构成比是否有差异&#xff1f; 二、问题分析 本案例的分析目的是研究四种抱怨原因的构成比是否存在差异&#xff0c;抱怨原因为定类数据&#xff0…

Spring Boot 中的 EhCacheCacheManager 是什么,原理,如何使用

Spring Boot 中的 EhCacheCacheManager 是什么&#xff0c;原理&#xff0c;如何使用 前言 在现代化的应用程序中&#xff0c;缓存是提高性能的关键所在。缓存可以降低数据库的负载&#xff0c;提高响应速度&#xff0c;减少资源消耗。Spring Boot提供了多种缓存管理器&#…

结合GPS的SAT图道路识别

文章目录 2019 Leveraging Crowdsourced GPS Data for Road Extraction from Aerial Imagery基本介绍对GPS的使用关于怎么证明GPS信息有效How to render gps to imageGPS信息简介GPS点状特征GPS其他特征挖掘 可借鉴的点 2020 Convolutional Recurrent Network for Road Boundar…

《黑马头条》SpringBoot+SpringCloud+ Nacos等企业级微服务架构项目

环境搭建、SpringCloud微服务(注册发现、服务调用、网关) 1)课程对比 2)项目概述 2.1)能让你收获什么 2.2)项目课程大纲 2.3)项目概述 随着智能手机的普及&#xff0c;人们更加习惯于通过手机来看新闻。由于生活节奏的加快&#xff0c;很多人只能利用碎片时间来获取信息&#x…

红帽认证考试流程详解,让你少走弯路

参加红帽认证考试涉及以下三个流程 账号和证件的准备 1 RHN 账号注册 考试前需要您提前注册红帽帐号(RHN) 注册地址&#xff1a;https://www.redhat.com/wapps/ugc/register.html 注册时以下条目请重点注意&#xff1a; ▸ 账户类型选择 Personal ▸ 红帽账户登录名…

onnx修改模型节点【改变input的shape】

因为转onnx后模型的输入无法转rknn&#xff0c;所以要对onnx进行节点修改成左边 import onnx import onnx.helper as helper from onnx.helper import TensorProto import numpy as npmodel onnx.load(demo.change.onnx) #自己创建新的节点 ###############################…

【LeetCode热题100】打卡第29天:二叉树的层序遍历二叉树的最大深度

文章目录 【LeetCode热题100】打卡第29天&#xff1a;二叉树的层序遍历&二叉树的最大深度⛅前言 二叉树的层序遍历&#x1f512;题目&#x1f511;题解 二叉树的最大深度&#x1f512;题目&#x1f511;题解 【LeetCode热题100】打卡第29天&#xff1a;二叉树的层序遍历&am…

Stage模型HarmonyOS服务卡片开发ArkTS卡片相关模块

图1 ArkTS卡片相关模块 FormExtensionAbility&#xff1a;卡片扩展模块&#xff0c;提供卡片创建、销毁、刷新等生命周期回调。 FormExtensionContext&#xff1a;FormExtensionAbility的上下文环境&#xff0c;提供FormExtensionAbility具有的接口和能力。 formProvider&…

CASAIM三维扫描仪在运动防护的应用高端运动器材设计定制器材头盔

CASAIM三维扫描技术在运动防护领域有广泛的应用&#xff0c;可以帮助设计和生产高端运动器材&#xff0c;检测运动器材适配性&#xff0c;以提供更好的运动防护。 CASAIM三维扫描仪可以将运动员的身体尺寸和形状精确地捕捉下来&#xff0c;以便制造出符合其个人需求的定制化器…

稳坐钓鱼台,第三大手机操作系统?华为鸿蒙OS 4.0首批测试版推送

华为鸿蒙OS 4.开发者Beta版首期招募正式开始&#xff0c;首批机型包括华为P60、P60 Pro、Mate 50、MatePad Pro 11英寸性能版等8款。 不可思议的是&#xff0c;华为方才开始招募没几天&#xff0c;就已经开始向用户推送鸿蒙OS 4.开发者Beta版的升级。它的更新速度令人瞩目&…

ChatGPT 话题相关和类 ChatGPT 工具 | 优质文章、相关论文、应用、学习资源整理

文章目录 一、前言二、主要内容三、总结 &#x1f349; CSDN 叶庭云&#xff1a;https://yetingyun.blog.csdn.net/ 一、前言 人工智能与手机和互联网一样具有革命性。 2023 年已经过去一半&#xff0c;ChatGPT 在今年以来一直备受瞩目。目前 ChatGPT 的更新速度逐渐放缓&#…

常见的远程协助软件简介

1.RayLink远程控制软件 RayLink是一个支持多系统多设备间相互远程控制的软件&#xff0c;是具有远程制作、远程办公、远程游戏、远程协助等需求的IT技术、游戏玩家、网络办公等这些人的最佳选择。通过使用RayLink&#xff0c;可随时随地远程控制其他电脑或手机&#xff0c;远程…

AI日报:DragGAN通过拖拽像素点实现图像调整 等

&#x1f989; AI新闻 &#x1f680; DragGAN&#xff1a;一种直观的图像编辑工具&#xff0c;通过拖拽像素点实现图像调整 摘要&#xff1a;研究者们来自马克斯・普朗克计算机科学研究所、MIT CSAIL和谷歌&#xff0c;他们开发了一种名为DragGAN的图像编辑工具。通过拖拽像素…

MATLAB 之 Simulink 子系统及其封装

这里写目录标题 一、子系统及其封装1. 子系统的创建1.1 通过 Subsystem 模块建立子系统1.2 通过已有的模块建立子系统 2. 子系统的条件执行2.1 使能子系统2.2 触发子系统2.3 使能加触发子系统 3. 子系统的封装3.1 lcon & Ports 选项卡的参数设置3.2 Parameters & Dialo…

最大池化|知识补充

最大池化的超参数&#xff1a;规模为2的过滤器&#xff0c;步幅为2 对于左上角深蓝色的区域&#xff0c;其中最大的数值是9&#xff0c;所以得到的输出为9&#xff1b; 向右移动两个步幅&#xff0c;输出为2&#xff1b; 第二行&#xff0c;22的绿色区域内输出为6&#xff1b;…