6

我刚开始研究 Jetpack compose 并下载了Jetnews的样本。

当我打开MainActivityJetnewsApp.kt时,我无法看到 Composable 函数的预览,我也添加了@Preview注释,但无法看到实时预览。

谁能帮我找到实时预览。
提前致谢。

4

5 回答 5

12

如果在课堂上添加@Preview注释后您的预览从未显示。JetnewsApp在我的情况下,添加@Preview我关闭项目然后再次打开项目后,它在 Macbook pro 中对我来说工作正常。

于 2019-10-24T10:33:38.613 回答
2

更新:

在此之前,我们必须添加@PreviewJetnewsApp获取预览。

@Preview
@Composable
fun JetnewsApp() { ... }

您只需要选中“显示装饰”选项即可显示真实的布局预览。

您可以使用相同的选项切换两个预览。

检查下图:

在此处输入图像描述

更新 2:

如果一开始不起作用,也要使 Android Studio 无效并重新启动。请记住,这仍在开发中。

于 2019-10-24T09:52:46.080 回答
2

JetnewsApp中,SelectTopicButton.kt只有@Preview()标签。当我们拥有任何文件时,@Preview()它会自动在右侧显示预览。

显示装饰模式下,您可以使用移动图像预览项目,它在屏幕上的外观。

为了获得实时预览,我们需要在@Preview标签之前添加标签,@Composable并且必须要渲染一些有趣的东西。


我曾尝试在 JetnewsApp.kt 中添加@Preview()和,它显示了预览。@Preview("MyScreen preview")

在此处输入图像描述

于 2019-10-24T10:25:05.863 回答
2

顺便说一句,目前@Preview仅适用于没有参数的@Composable功能。所以请再次检查您的可组合功能

于 2019-11-21T04:26:10.613 回答
0

我有一个类似的问题,预览不会显示。问题是我setContent在函数中也有调用。删除它并重建按预期呈现预览。

所以

    @Preview(showBackground = true, widthDp = 320)
    @Composable
    fun PreviewMainScreen() {
        setContent {
            Greeting()
        }
    }

会失败并且

    @Preview(showBackground = true, widthDp = 320)
    @Composable
    fun PreviewMainScreen() {
        Greeting()
    }

按预期工作。

令人惊讶的是,这是我不明白的一点,一旦预览正确呈现,我可以setContent再次添加它,它会更新并仍然显示。

于 2021-10-23T13:51:34.793 回答