当前位置: 首页 > 知识库问答 >
问题:

我如何在jetpack中实现bottomSheet三态合成?

翟俊
2023-03-14

我需要使用jetpack compose来实现这三种状态的底部表单布局,如何通过最佳实践来实现?

https://i.stack.imgur.com/86FXs.png

共有1个答案

满自明
2023-03-14

ModalBottomSheetValue具有一个状态半扩展的状态

底部工作表在屏幕高度的50%处部分可见。仅当底部工作表的高度超过屏幕高度的50%时才启用此状态。

因此,您的ModalBottomSheetLayout的高度应该超过屏幕的一半

我的例子。请注意此代码高度(600.dp)。尝试使用此值

class ComposeActivity7 : ComponentActivity() {

    @ExperimentalMaterialApi
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContent {
            ComposeTutorialTheme {
                val modalBottomSheetState =
                    rememberModalBottomSheetState(ModalBottomSheetValue.Hidden)
                val scope = rememberCoroutineScope()

                Scaffold(
                    floatingActionButton = {
                        FloatingActionButton(
                            onClick = {
                                scope.launch {
                                    modalBottomSheetState.show()
                                }
                            }) {
                            Icon(
                                Icons.Rounded.Add,
                                contentDescription = "add"
                            )
                        }
                    }) {
                    ModalBottomSheetLayout(
                        sheetState = modalBottomSheetState,
                        sheetContent = {
                            MySheet()

                        }
                    ) {
                        Text("hello")
                    }
                }
            }
        }
    }
}

@Composable
fun MySheet() {
    Column {
        Box(
            modifier = Modifier
                .fillMaxWidth()
                .height(600.dp)
        )
    }
}

结果

 类似资料:
  • 如何在JetPack Compose BottomSheet状态更改上实现回调/侦听器机制? 类似的东西: 正如我们过去在Java/静态编程语言中所做的那样。 现在,我正在将其作为lambda传递给另一个需要关闭底片的可组合。 但是我想得到一个回调,底部的工作表已经完全折叠,我可以继续我的任务。 我面临的实际问题:我正在通过按钮单击将可组合文件转换为位图。按钮在BottomSheet内部,需要转换

  • 因此,我试图实现的是: 托管BottomNav Bar的家庭组合(此处使用脚手架) 底部导航栏与其他3个组合附加 3个组合中的每一个都有自己的惰性列 3个延迟列中的每个项目都有一个菜单图标,单击该图标会打开底部工作表 我能够通过将脚手架包含在一个ModalBottonSheetLayout中来实现以上目标,这是借助于这里的答案:Jetpack Compose Scaffold Modal Bott

  • 本文向大家介绍如何在JavaScript中实现多态?,包括了如何在JavaScript中实现多态?的使用技巧和注意事项,需要的朋友参考一下 多态性 多态 是面向对象编程(OOP)的宗旨之一。它有助于设计对象,使其可以与特定提供的对象共享或覆盖任何行为。多态性 利用继承的 优势来实现这一点。 在以下示例中,子对象(例如“板球”和“网球”)已覆盖从父对象“游戏”调用的“选择”方法,并分别返回了新字符串

  • 问题内容: 首先,为发布一些过分具体的内容而道歉,但是我对Swing并不十分了解,并且似乎找不到适合我需求的好例子。 因此,我试图找出实现动态GUI以便在Swing中选择过滤条件的最佳方法: 要实现的GUI样机 基础模型是一个类,其中包含可否定(例如,使用NOT前缀)条件的列表,以及指示这些条件应与AND还是OR组合的属性。 GUI将允许用户添加,更改或删除条件,并选择组合运算符(和/或)。第一个

  • 问题内容: 我正在使用hibernate模式。我需要在下面创建查询。subContest可能为null,在这种情况下,不应将其作为where子句的一部分。在常规SQL中创建动态sql时;对于这种情况,我曾经做过,但在以下情况下如何实现。在这里,如果我尝试这样做,将给出异常,因为cont应该是id而不是字符串。 问题答案: 您可以尝试在hibernate中使用条件查询 您可以添加where子句作为限

  • BottomSheet 是一个 Android 组件用于在屏幕底部呈现一个可消失的组件。