android - 如何在jetpack compose中预览对话框?

标签 android kotlin android-jetpack-compose

我有这个代码:

@Composable
fun SomeDialog() {
    Dialog(onDismissRequest = { }, properties = DialogProperties()) {
        ....
    }
}

@Preview(showBackground = true)
@Composable
fun SomeDialogPreview() {
    MyTherapyPreviewTheme {
        Scaffold {
            SomeDialog()
        }
    }
}
我希望这个预览会生成一个类似于其他可组合函数的预览,但是我在预览中只看到一个白色矩形(纯脚手架)而不是这个。
如何以正确的方式生成对话框预览?或者我只能在单独的函数中预览对话框的内容?

最佳答案

@MihaiBC 非常准确地说明了为什么您(还)不能预览。同时,您可以通过将对话内容提取到单独的组合中来预览对话内容。
例如,如果您的对话框如下所示:

@Composable
fun SomeDialog() {
    Dialog(onDismissRequest = { }, properties = DialogProperties()) {
         Card(modifier = Modifier.fillMaxWidth()) {
             .....
        }
    }
}
然后提取内容如下:
@Composable
fun SomeDialog() {
    Dialog(onDismissRequest = { }, properties = DialogProperties()) {
         SomeDialogContent()
    }
}

@Composable
fun SomeDialogContent(){
   Card(modifier = Modifier.fillMaxWidth()) {
       .....
   }
}
最后预览 SomeDialogContent有一些填充:
@Preview
@Composable
fun PreviewSomeDialogContent() {
    AppTheme {
        Box(
            modifier = Modifier
                .fillMaxSize()
                .background(MaterialTheme.colors.background)
                .padding(20.dp),
            contentAlignment = Alignment.Center,
        ) {
            SomeDialogContent({})
        }
    }
}
enter image description here

关于android - 如何在jetpack compose中预览对话框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69173919/

相关文章:

android - 如何在 Google Analytics 上将屏幕作为页面进行跟踪? (使用应用程序数据的网站 View )

android - 如何自定义 Exoplayer 视频广告 UI?

kotlin - 为什么这段 Kotlin 代码不起作用? (如果 str[index] 在列表中则打印)

generics - 为 kotlin 泛型设置默认值

android - 使 ModalBottomSheetLayout 始终展开

android改变countDownTimer的时间

Android CardView cardCornerRadius 间隙

function - 函数的 Kotlin 类型不匹配返回字符串

android - Jetpack Compose Android TextField 超出宽度并插入右侧元素变得狭窄

Android Compose - 仅在列中对齐中心一个可组合项?