Jetpack Compose - Scaffold、SnackBar

2024-05-26 17:08

本文主要是介绍Jetpack Compose - Scaffold、SnackBar,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Jetpack Compose - Scaffold、SnackBar

    • 0、介绍
    • 1、属性一览
    • 2、使用示例
    • 3、版本更新
    • 4、未解决问题

Compose系列文章,请点原文阅读。原文,是时候学习Compose了!

0、介绍

脚手架实现了Material设计的页面基本结构。该组件通过确保其适当的布局策略从而将其他的多个组件组合在一起构成页面。

其实也就是说该组件提供了组合各个组件的API,包括标题栏、底部栏、SnackBar(类似吐司功能)、浮动按钮、抽屉组件、剩余内容布局等,让我们可以快速定义一个基本的页面结构。

接下来通过其参数我们可以很简单的理解这个函数的作用,同时也将SnackBar结合进去。

1、属性一览

【目前基于beta01版本】函数如下:

@Composable fun Scaffold(modifier: Modifier = Modifier, scaffoldState: ScaffoldState = rememberScaffoldState(), topBar: () -> Unit = emptyContent(), bottomBar: () -> Unit = emptyContent(), snackbarHost: (SnackbarHostState) -> Unit = { SnackbarHost(it) }, floatingActionButton: () -> Unit = emptyContent(), floatingActionButtonPosition: FabPosition = FabPosition.End, isFloatingActionButtonDocked: Boolean = false, drawerContent: ColumnScope.() -> Unit = null, drawerGesturesEnabled: Boolean = true, drawerShape: Shape = MaterialTheme.shapes.large, drawerElevation: Dp = DrawerDefaults.Elevation, drawerBackgroundColor: Color = MaterialTheme.colors.surface, drawerContentColor: Color = contentColorFor(drawerBackgroundColor), drawerScrimColor: Color = DrawerDefaults.scrimColor, backgroundColor: Color = MaterialTheme.colors.background, contentColor: Color = contentColorFor(backgroundColor), content: (PaddingValues) -> Unit
): Unit

属性参数含义:

参数含义
modifier: Modifier = Modifier应用于布局的修饰符
scaffoldState: ScaffoldState = rememberScaffoldState()该脚手架的状态。例如控制抽屉的打开与否,组件的尺寸等
topBar: () -> Unit = emptyContent()屏幕顶部的标题栏
bottomBar: () -> Unit = emptyContent()屏幕底部的标题栏
snackbarHost: (SnackbarHostState) -> Unit = { SnackbarHost(it) }用来展示SnackBar的一个组件
floatingActionButton: () -> Unit = emptyContent()悬浮按钮
floatingActionButtonPosition: FabPosition = FabPosition.End悬浮按钮在屏幕上的位置
isFloatingActionButtonDocked: Boolean = false如果存在BottomBar,那么是否与BottomBar重叠一般的高度
drawerContent: ColumnScope.() -> Unit = null抽屉组件中的内容
drawerGesturesEnabled: Boolean = true是否允许手势控制抽屉的打开和关闭
drawerShape: Shape = MaterialTheme.shapes.large抽屉组件的形状
drawerElevation: Dp = DrawerDefaults.Elevation抽屉组件的阴影高度
drawerBackgroundColor: Color = MaterialTheme.colors.surface抽屉组件的背景色
drawerContentColor: Color = contentColorFor(drawerBackgroundColor)抽屉组件内容的背景色
drawerScrimColor: Color = DrawerDefaults.scrimColor抽屉组件打开时屏幕剩余部分的遮盖颜色
backgroundColor: Color = MaterialTheme.colors.background脚手架组件的背景色
contentColor: Color = contentColorFor(backgroundColor)脚手架组件内容的背景色
bodyContent: (PaddingValues) -> Unit脚手架中的组件

2、使用示例

我们使用Scaffold可以很方便的实现包含抽屉布局的UI,代码如下:

@Composable
fun ScaffoldDemo() {val scaffoldState = rememberScaffoldState()Scaffold(scaffoldState = scaffoldState,drawerContent = {Box(modifier = Modifier.fillMaxSize(),contentAlignment = Alignment.Center) {Text(text = "抽屉组件中内容")}},//标题栏区域topBar = {TopAppBar(title = { Text(text = "脚手架示例") },navigationIcon = {IconButton(onClick = {scaffoldState.drawerState.open()}) {Icon(imageVector = Icons.Filled.Menu,contentDescription = null)}})},//悬浮按钮floatingActionButton = {ExtendedFloatingActionButton(text = { Text("悬浮按钮") },onClick = { })},floatingActionButtonPosition = FabPosition.End,//屏幕内容区域content= {Box(modifier = Modifier.fillMaxSize(),contentAlignment = Alignment.Center) {Text(text = "屏幕内容区域")}},)
}

实现效果如下所示:
在这里插入图片描述
一个很简单的侧滑抽屉的功能就完成了。
接下来我们使用下SnackBar的功能,添加如下相关的参数,然后我们在点击悬浮按钮的时候添加点击事件,如下所示:

val scope = rememberCoroutineScope()//悬浮按钮
floatingActionButton = {ExtendedFloatingActionButton(text = { Text("悬浮按钮") },onClick = {scope.launch {scaffoldState.snackbarHostState.showSnackbar("点击了悬浮按钮")}})
},

SnackBar显示效果如下:
在这里插入图片描述
当然了如果你想自定义SnackBar显示的外观也可以通过snackbarHost参数来定义,如下我们定义了一个红色背景,白色内容,切角边框的SnackBar:

snackbarHost = {SnackbarHost(it) { data ->Snackbar(snackbarData = data,backgroundColor = myRed,contentColor = Color.White,shape = CutCornerShape(10.dp))}
},

显示效果如下所示:
在这里插入图片描述

3、版本更新

  • 暂无

4、未解决问题

暂无。关于Scaffold官方还有另外两种实现:BackdropScaffold和BottomSheetScaffold,具体使用上没有什么大的问题,和Scaffold类似,大家可以自定运行查看相关效果,如果是自己平常开发中需要的,那么直接使用即可。

这篇关于Jetpack Compose - Scaffold、SnackBar的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1005071

相关文章

从状态管理到性能优化:全面解析 Android Compose

文章目录 引言一、Android Compose基本概念1.1 什么是Android Compose?1.2 Compose的优势1.3 如何在项目中使用Compose 二、Compose中的状态管理2.1 状态管理的重要性2.2 Compose中的状态和数据流2.3 使用State和MutableState处理状态2.4 通过ViewModel进行状态管理 三、Compose中的列表和滚动

docker-compose安装和简单使用

本文介绍docker-compose的安装和使用 新版docker已经默认安装了docker-compose 可以使用docker-compose -v 查看docker-compose版本 如果没有的话可以使用以下命令直接安装 sudo curl -L https://github.com/docker/compose/releases/download/1.16.1/docker-c

Docker Compose使用手册

Docker Compose是一个比较简单的docker容器的编配工具,以前的名称叫Fig,由Orchard团队开发的开源Docker编配工具,在2014年被Docker公司收购,Docker Compose是使用Python语言开发的一款docker编配工具。使用Docker Compose,可以用一个yml文件定义一组要启动的容器,以及容器运行时的属性。Docker Compose称这些容器为

【docker】基于docker-compose 安装elasticsearch + kibana + ik分词器(8.10.4版本)

记录下,使用 docker-compose 安装 Elasticsearch 和 Kibana,并配置 IK 分词器,你可以按照以下步骤进行。此过程适用于 Elasticsearch 和 Kibana 8.10.4 版本。 安装 首先,在你的工作目录下创建一个 docker-compose.yml 文件,用于配置 Elasticsearch 和 Kibana 的服务。 version:

Docker-Compose for Linux安装

Docker-Compose for Linux安装 1.前言2.安装Docker-Compose 1.前言 我们为什么要使用docker-compose? 我们运行一个docker镜像,需要添加大量的参数。 现在我们可以通过docker-compose编写这些参数。 Docker-Compose可以帮助我们批量管理这些容器。 我们只需要通过一个docker-compos

docker和docker-compose安装脚本

1.docker安装脚本 1.1创建脚本文件 touch install_docker.shchmod 777 install_docker.shcat > install_docker.sh << 'EOF'#!/bin/bash# 删除现有的 Dockerecho -e "========== 1. 删除现有 Docker ================\n\n"sudo yu

《Linux运维总结:基于X86_64+ARM64架构CPU使用docker-compose一键离线部署consul 1.18.1容器版分布式ACL集群》

总结:整理不易,如果对你有帮助,可否点赞关注一下? 更多详细内容请参考:《Linux运维篇:Linux系统运维指南》 一、部署背景 由于业务系统的特殊性,我们需要面向不通的客户安装我们的业务系统,而作为基础组件中的consul 针对不同的客户环境需要多次部署集群,作为一个运维工程师,提升工作效率也是工作中的重要一环。所以我觉得有必要针对 x86_64 + ARM64 CPU架构cons

Android中Snackbar的使用

Snackbar: Snackbar.make(view,"这是一个Snackbar",Snackbar.LENGTH_SHORT)//View,提示信息,显示时间.setAction("点击进行操作 ", new View.OnClickListener() {//事件提示和点击事件@Overridepublic void onClick(View v) {//点击Snackerbar进行的操

基础学习之——Docker Compose的安装和使用

Docker Compose是一个用于定义和管理多个Docker容器的工具。它使用YAML文件来配置应用程序的服务、网络和卷等等。下面是Docker Compose的安装、配置和使用方式的详细说明: 安装Docker Compose: 首先,确保已经安装了Docker引擎。可以参考官方文档安装Docker:https://docs.docker.com/install/然后,下载适合您操作系统

09-02 周一 Ubuntu上使用docker-compose部署elasticsearch和kibana服务

09-02 周一 Ubuntu上部署elasticsearch和kibana服务 时间版本修改人描述2024年9月2日11:13:54V0.1宋全恒新建文档 简介  由于组里需要提供一个简易的环境来部署一套服务,可以通过接口进行数据的存储和检索,因此,直接部署一套ES服务来充当这样的功能,本文主要是负责记录整个环境的搭建过程。 步骤 确定docker命令可以使用 songquanh