Jetpack Compose——Scaffold(脚手架)、SnackBar(通知,类似Toast)的简单使用
该博客基于:compose_version = '1.1.0-beta01'
脚手架实现了Material设计的页面基本结构。该组件通过确保其适当的布局策略从而将其他的多个组件组合在一起构成页面,包括标题栏、底部栏、SnackBar(类似Toast功能)、浮动按钮、抽屉组件、剩余内容布局等
Scaffold
首先来看看参数:
Scaffold(modifier: Modifier = Modifier,//布局修饰scaffoldState: ScaffoldState = rememberScaffoldState(),//脚手架状态(例如控件抽屉是否打开)topBar: @Composable () -> Unit = {},//屏幕顶部的标题栏bottomBar: @Composable () -> Unit = {},//屏幕底部的标题栏snackbarHost: @Composable (SnackbarHostState) -> Unit = { SnackbarHost(it) },//用来展示SnackBar的一个组件floatingActionButton: @Composable () -> Unit = {},//悬浮按钮floatingActionButtonPosition: FabPosition = FabPosition.End,// 悬浮按钮在屏幕上的位置isFloatingActionButtonDocked: Boolean = false,// 如果存在BottomBar,那么是否与BottomBar重叠一半的高度drawerContent: @Composable (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: @Composable (PaddingValues) -> Unit//脚手架中的组件
)
简单使用:
@Composable
fun ScaffoldTest() {val scaffoldState = rememberScaffoldState()val scope = rememberCoroutineScope()Scaffold(scaffoldState = scaffoldState,drawerContent = {//抽屉组件Box(modifier = Modifier.fillMaxSize(), contentAlignment = Alignment.Center) {Text(text = "抽屉组件中内容")}},topBar = {//屏幕顶部的标题栏TopAppBar(title = { Text("脚手架") },navigationIcon = {IconButton(onClick = {scope.launch { scaffoldState.drawerState.open() }}) {Icon(Icons.Filled.Menu, contentDescription = null)}})},floatingActionButton = {//悬浮按钮ExtendedFloatingActionButton(text = { Text("悬浮按钮") },onClick = {scope.launch { scaffoldState.snackbarHostState.showSnackbar("点击了悬浮按钮") }})},floatingActionButtonPosition = FabPosition.End,//悬浮按钮在屏幕中的位置content = {//屏幕内容Box(modifier = Modifier.fillMaxSize(), contentAlignment = Alignment.Center) {Text(text = "屏幕内容区域")}})}
效果如图:
Snackbar
在上面的示例中在底部按钮的点击事件上增加了SnackBar的通知显示,Snackbar 是 Android 5.0 新特性——Material Design 中的一个控件,用来代替 Toast ,Snackbar与Toast的主要区别是:Snackbar可以处理用户交互事件,先来看看参数:
Snackbar(modifier: Modifier = Modifier,//布局修饰action: @Composable (() -> Unit)? = null,//动作actionOnNewLine: Boolean = false,//action是否应该放在单独的行上shape: Shape = MaterialTheme.shapes.small,//Snackbar的形状和阴影 backgroundColor: Color = SnackbarDefaults.backgroundColor,//背景颜色contentColor: Color = MaterialTheme.colors.surface,//内容颜色elevation: Dp = 6.dp,//阴影效果content: @Composable () -> Unit//内容
)
Snackbar(snackbarData: SnackbarData,//通过SnackbarHostState显示的关于当前snackbar的数据modifier: Modifier = Modifier,//布局修饰actionOnNewLine: Boolean = false,//action是否应该放在单独的行上shape: Shape = MaterialTheme.shapes.small,//Snackbar的形状和阴影 backgroundColor: Color = SnackbarDefaults.backgroundColor,//背景颜色contentColor: Color = MaterialTheme.colors.surface,//内容颜色actionColor: Color = SnackbarDefaults.primaryActionColor,//动作颜色elevation: Dp = 6.dp//阴影效果
)
在原来的Scaffold的demo基础之上增加snackbarHost定义Snackbar:
@Composable
fun ScaffoldTest() {val scaffoldState = rememberScaffoldState()val scope = rememberCoroutineScope()Scaffold(scaffoldState = scaffoldState,drawerContent = {//抽屉组件Box(modifier = Modifier.fillMaxSize(), contentAlignment = Alignment.Center) {Text(text = "抽屉组件中内容")}},topBar = {//屏幕顶部的标题栏TopAppBar(title = { Text("脚手架") },navigationIcon = {IconButton(onClick = {scope.launch { scaffoldState.drawerState.open() }}) {Icon(Icons.Filled.Menu, contentDescription = null)}})},floatingActionButton = {//悬浮按钮ExtendedFloatingActionButton(text = { Text("悬浮按钮") },onClick = {scope.launch {scaffoldState.snackbarHostState.showSnackbar("点击了悬浮按钮")}})},floatingActionButtonPosition = FabPosition.End,//悬浮按钮在屏幕中的位置content = {//屏幕内容Box(modifier = Modifier.fillMaxSize(), contentAlignment = Alignment.Center) {Text(text = "屏幕内容区域")}},snackbarHost = {SnackbarHost(it) { data ->Snackbar(snackbarData = data,backgroundColor = Color.Blue,contentColor = Color.White,shape = RoundedCornerShape(10.dp))}})}
效果如图:
Jetpack Compose——Scaffold(脚手架)、SnackBar(通知,类似Toast)的简单使用相关推荐
- Jetpack Compose——DropdownMenu(下拉菜单)的简单使用
基于compose_version=1.1.0-beta01版本 参数如下: DropdownMenu(expanded: Boolean,//菜单栏状态onDismissRequest: () -& ...
- 结合Navigation组件实现JetPack Compose的界面导航
Android JetPack Compose可以利用Navigation组件来实现导航 一.Navigation组件的配置 新建项目,选择Empty Compose Activity. 然后,在项目 ...
- Android JetPack Compose组件中Scaffold的应用
一. 创建Activity Empty Compose模块 在Android Studio中创建一个新的项目,选择一个Empty Compose Activity,如下图所示: 二.搭建Scaffol ...
- Jetpack Compose入门详解(实时更新)
Jetpack Compose入门详解 前排提醒 前言(Compose是什么) 1.实战准备 一.优势与缺点 二.前四课 三.标准布局组件 1.Column 2.Row 3.Box 四.xml和com ...
- Jetpack Compose 中的架构思想
Jetpack Compose 中的架构总览 如果应用打算使用 Jetpack Compose 来开发,那么就可以跟以前的MVC.MVP.MVVM等乱七八糟的架构全部说拜拜,这些名词也将在Androi ...
- Jetpack Compose
Jetpack Compose:声明式UI框架 (Composition over inheritance) 组合优于继承 1. 什么是Compose,有什么优势? Jetpack Compose 是 ...
- Android JetPack Compose初步1
一.为什么要使用JetPack Compose? 1.Android视图层次结构存在的问题 由于应用的状态会因用户交互等因素而发生变化,因此界面层次结构需要进行更新以显示当前数据.在更新时会改变 wi ...
- jetpack compose原理解析
目录 jetpack compose原理解析 jetpack compse 声明式ui开发 原理分析 整体框架介绍 compose LayoutNode布局介绍 @Composeable注解实现细节 ...
- Jetpack Compose中的Modifier
Modifier的基本使用 Modifier修饰符是Jetpack Compose中用来修饰组件的,提供常用的属性,写布局时几乎所有Composable组件的大部分属性都可以用Modifier 来修饰 ...
最新文章
- Global Mapper怎么能够导出.xyz文件
- tentsqlserver中用bcp 来导入导出表数据
- SQL中的存储过程中的事务处理。备忘
- 【翻译】How-To: Using the N* Stack, part 3
- 被嫌弃的eval和with
- Inkscape导出xaml
- iss版本服务器读取_Netty每次读取客户端数量
- 也来学学插件式开发续-利用MEF
- 华为机试HJ37:统计每个月兔子的总数(斐波那契数列)
- Android之AIDL跨进程通讯
- 线性分类模型和向量矩阵求导_自然语言处理中向量空间模型的矩阵设计
- Python基础:68 个 Python 内置函数介绍(超级详细版本)
- 数据库面试复习_数据科学面试复习
- 什么牌子的蓝牙耳机性价比高质量好?高性价比降噪蓝牙耳机推荐
- SprintBoot:Post请求的参数多一个逗号的解决方法
- 台式计算机没有声音怎么办,台式电脑没有声音了怎么恢复(在家用这两个方法轻松解决)...
- 陆奇也不能免AIGC这个「俗」
- (一)ArcGIS JS 发布动态地图服务
- 对接阿里云内容安全服务(机审视频检测)
- *6-2 CCF 2015-03-3 节日
热门文章
- Kubernetes基础3
- 怎么查看vue和vue-cli(脚手架)的版本?
- CSDN账号密码泄露真相
- 能够帮助睡眠的东西,这些东西能改善你的睡眠质量
- JAVA银企直连建设银行云直连模式超详细讲解
- Pr调色预设怎么安装?.cube格式luts预设如何导入pr?Premiere导入LUTs预设详细教程
- 蓝桥杯python青少年题目_蓝桥杯报名通道开启啦,抢先看考试相关事宜(内含试题)...
- 音频信号调制,解调,加噪,去噪,滤波,matlab实现
- mongoTemplate使用group函数进行分组和统计
- 数字标牌(Digital Signage)