我已经在Compose中包装了一个Dialog,Android.然而,事情似乎并没有出现.我不确定我需要在这里做什么,才能正确地修复这个问题,让它自然地工作.因为,我计划使用inputs和其他东西,例如buttons等.

@SuppressLint("UnusedMaterial3ScaffoldPaddingParameter")
@OptIn(ExperimentalComposeUiApi::class, ExperimentalMaterial3Api::class)
@Composable
fun MyDialog(
    openDialog: Boolean,
    closeDialog: () -> Unit,
) {
    if (openDialog) {
        Dialog(
            properties = DialogProperties(usePlatformDefaultWidth = false),
            onDismissRequest = closeDialog,
            content = {
                Scaffold(
                    modifier = Modifier.fillMaxSize(),
                    topBar = {
                        SmallTopAppBar(
                            modifier = Modifier.padding(0.dp, 0.dp, 16.dp, 10.dp),
                            title = {
                                Text(
                                    text = "Add new item",
                                    style = MaterialTheme.typography.titleMedium,
                                )
                            },
                            colors = TopAppBarDefaults.smallTopAppBarColors(
                                containerColor = MaterialTheme.colorScheme.background
                            ),
                            navigationIcon = {
                                IconButton(onClick = {
                                    closeDialog()
                                }) {
                                    Icon(
                                        imageVector = Icons.Filled.Close,
                                        contentDescription = null
                                    )
                                }
                            },
                            actions = {
                                Text(
                                    "Save",
                                    fontWeight = FontWeight.SemiBold
                                )
                            },
                        )
                    },
                ){
                    Text("Hello world!") // <-- Does not show up
                }
            }
        )
    }
}

Produces:

enter image description here

推荐答案

原因是您忽略了来自ScaffoldinnerPadding个值.您应该使用它作为您的外层合成ASModifier.padding(it)的填充.

                   Text("Hello world!", modifier = Modifier.padding(it))

上面的代码应该可以工作.为了进一步使用,将内容包装在容器中,在本例中为Column.

val scrollState = rememberScrollState()
            Column(
                modifier = Modifier
                    .padding(it)
                    .verticalScroll(state = scrollState)
                    .fillMaxSize()
            ) {
                Text("Hello world!")
            }

要显示对话框,您不必将不可变状态传递给可组合对话框,即openDialog: Boolean.Here是您应该如何处理对话状态的更好示例.

Android相关问答推荐

写入排除例外以进行依赖性判断

Kotlin DSL:为什么我可以从Play Store获取发布版本的日志(log)?

格雷德的两个星号是什么意思?非路径

如何使可拖动内容停留在可组合框的边界内

在androidStudio中,如何使用带有ResolutionStrategy的ResolutionSelector而不是setTargetResolve()?

制作圆形SupportMapFragment

Color.Transparent 和 Color.Unspecified 之间的区别

错误:参数的类型必须是用@Entity注释的类或其集合/array. java.lang.String tocd);

Android Jetpack Compose全宽度抽屉优化

是否可以按照干净的体系 struct 将活动实例传递给视图模型

如何知道我的应用程序的新版本是否显示广告?

使用 Kotlin 在 Android 中导航时如何防止 ViewModel 被杀死?

在 Jetpack Compose 中使用 .observeAsState() 时,如何在更改 MutableLiveData 的值后开始执行一段代码?

android xml底部空间大

Android:为什么 ICICI iMobile Pay 应用程序在我的应用程序中显示root/jailbroken设备?

如何在 Jetpack Compose 中更改 ModalNavigationDrawer 的抽屉容器 colored颜色 ?

如何在 TextInputEdit 中调整可绘制对象的大小

不能在kotlin的lazycolumn中使用列表

Сan 无法从 Firestore 获取数据,没有错误

如何获取 Material Design 3 的底部导航栏高度?