Day 28 Compose UI ModalBottomSheetLayout

今年的疫情蛮严重的,希望大家都过得安好,今天疫情已经降级,
希望疫情快点过去,能回到一些线下技术聚会的时光~

今天目标:了解 Compose UI 上 ModalBottomSheetLayout 怎麽使用。

一开始觉得会很麻烦,後来查了一下最简单的实现方式也很简单!!!

画面如下:

程序码如下:

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
setContent{
BottomSheetSample()
}
}
@ExperimentalMaterialApi
@Composable
fun BottomSheetSample(){
val bottomSheetScaffoldState =rememberBottomSheetScaffoldState(
        bottomSheetState = BottomSheetState(BottomSheetValue.Collapsed))
val scope =rememberCoroutineScope()
BottomSheetScaffold(
        scaffoldState= bottomSheetScaffoldState,
sheetContent ={
Box(
                Modifier
                    .fillMaxWidth()
                    .height(300.dp)
                    .background(Color(0xAA3fa7cc))){
Text(
                    text = "Hello from bottom sheet",
                    modifier = Modifier
                        .align(Alignment.Center)
                )
}
        },
        sheetPeekHeight= 40.dp
){
MainScreenView( scope, bottomSheetScaffoldState )
}
}
@Composable
@ExperimentalMaterialApi
fun MainScreenView(scope: CoroutineScope, bottomSheetScaffoldState : BottomSheetScaffoldState) {
Box(
        Modifier
            .fillMaxWidth()
    ){
Button(
            modifier = Modifier
                .padding(20.dp)
                .align(alignment = Alignment.TopCenter),
            onClick ={
scope.launch{
if (bottomSheetScaffoldState.bottomSheetState.isCollapsed) {
                        bottomSheetScaffoldState.bottomSheetState.expand()
                    } else {
                        bottomSheetScaffoldState.bottomSheetState.collapse()
                    }
}
            }
){
Text(
                text = "Click to show Bottom Sheet"
            )
}
    }
}

都理解的话今天就结束了~
比较值得注意的地方是这是一个 ExperimentalMaterialApi 喔!

Compose UI 也有 ModalBottomSheetLayout,
比起原本的 BottomSheetLayout又更有弹性了些,
不过因为时间因素…就不在此列出了。

接着就剩下两天了!明天见:)
参考资料:
https://betterprogramming.pub/explore-android-bottom-sheets-in-jetpack-compose-50eff0257231

本文同步发表在 Medium 文章连结


<<:  第 18 集:Bootstrap 客制化 Sass 必备知识(上)

>>:  日历功能更新 Day29

来做一个色码转换器吧!

前言 今天来做一个色码转换器~ 我们先认识色码之间的关系,拆解步骤後再一步步完成吧! 颜色表示的方法...

[DAY 10] Pytorch 简介

前言 在开始进入我们各式各样的深度模型之前,我们要先来介绍一个非常 Powerful 的 Deep ...

虾皮串接实作笔记-串接 API 虾皮物流标签

前言 目标:串接虾皮订单、标签资讯,目前串接虾皮 OpenAPI 2.0 版本,串接手册 串接步骤:...

[DAY15]组图(2)

Imagemap message Imagemap messages are messages co...

Day25 - 加入简单的动画

今天想偷个懒,先为App加入一点动画, 主要是从欢迎页到登入页的过度动画。 Navigation t...