在 Jetpack Compose 中跨可组合函数重复使用一组预览注释

Shl*_*iel 18 android android-jetpack-compose android-jetpack-compose-preview

在 Jetpack Compose 中迈出第一步,这非常令人惊奇,除了一个恼人的问题。

我有一组固定的预览:正常、深色和 RTL:

@Preview(
    name = "Normal",
    group = "Screen",
    showBackground = true
)
@Preview(
    name = "Dark",
    group = "Screen",
    showBackground = true,
    uiMode = Configuration.UI_MODE_NIGHT_YES
)
@Preview(
    name = "RTL",
    group = "Screen",
    showBackground = true,
    locale = "iw"
)
@Composable
fun JustAComposable() {
   ...
}
Run Code Online (Sandbox Code Playgroud)

举个例子,我预览了 50 个可组合函数。我需要将这个集合复制粘贴 50 次,这是绝对不正确的。

注释继承是被禁止的,所以我的问题是:是否有人找到了在所有可组合函数中重用同一组预览的方法?

我能想到的唯一的两个解决方案是:

  • 在开发时使用多个自定义预览。
  • 部分重用预览 - 使用名称和组的编译时常量。

编辑:

我创建了一个功能请求来组成团队,以便能够创建自定义注释并使用我想要重用的所有预览来注释注释。

这样我只需要使用我的自定义注释。

可以在Google 问题跟踪器中进行跟踪

Rub*_*man 17

已接受的功能请求现已实现,并可从 Android Studio Dolphin 和 Jetpack Compose 1.2.0-beta01 开始使用。

它称为多重预览注释。有关此功能的更多信息可以在此处找到。

为了使用此功能,您必须创建一个自定义注释类。

@Preview(
    name = "small font",
    group = "font scales",
    fontScale = 0.5f
)
@Preview(
    name = "large font",
    group = "font scales",
    fontScale = 1.5f
)
annotation class FontScalePreviews
Run Code Online (Sandbox Code Playgroud)

现在您可以应用这个注释类。例如:

@FontScalePreviews
@Composable
fun HelloWorldPreview() {
    Text("Hello World")
}
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述