在可组合函数中重复使用 Jetpack Compose 中的一组预览注释
Reuse a single set of preview annotations in Jetpack Compose across composable functions
在 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() {
...
}
比方说,我预览了 50 个可组合函数。我需要复制粘贴这组 50 次,这是绝对不正确的。
注释继承是被禁止的,所以我的问题是:有没有人找到在所有可组合函数中重用同一组预览的方法?
我能想到的仅有的 2 个解决方案是:
- 在开发时仅使用多个自定义预览。
- 部分重用预览 - 对名称和组使用编译时常量。
编辑:
我创建了一个功能请求来组成团队,以便能够创建自定义注释并使用我想重复使用的所有预览来注释注释。
这样我只需要使用我的自定义注释。
中追踪
接受的功能请求现已实现,从 Android Studio Dolphin 和 Jetpack Compose 1.2.0-beta01 开始可用。
它被称为Multipreview Annotation。有关此功能的更多信息可以 found here.
为了使用此功能,您必须创建自定义注释 class。
@Preview(
name = "small font",
group = "font scales",
fontScale = 0.5f
)
@Preview(
name = "large font",
group = "font scales",
fontScale = 1.5f
)
annotation class FontScalePreviews
现在您可以应用此注释 class。例如:
@FontScalePreviews
@Composable
fun HelloWorldPreview() {
Text("Hello World")
}
在 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() {
...
}
比方说,我预览了 50 个可组合函数。我需要复制粘贴这组 50 次,这是绝对不正确的。
注释继承是被禁止的,所以我的问题是:有没有人找到在所有可组合函数中重用同一组预览的方法?
我能想到的仅有的 2 个解决方案是:
- 在开发时仅使用多个自定义预览。
- 部分重用预览 - 对名称和组使用编译时常量。
编辑:
我创建了一个功能请求来组成团队,以便能够创建自定义注释并使用我想重复使用的所有预览来注释注释。
这样我只需要使用我的自定义注释。
中追踪接受的功能请求现已实现,从 Android Studio Dolphin 和 Jetpack Compose 1.2.0-beta01 开始可用。
它被称为Multipreview Annotation。有关此功能的更多信息可以 found here.
为了使用此功能,您必须创建自定义注释 class。
@Preview(
name = "small font",
group = "font scales",
fontScale = 0.5f
)
@Preview(
name = "large font",
group = "font scales",
fontScale = 1.5f
)
annotation class FontScalePreviews
现在您可以应用此注释 class。例如:
@FontScalePreviews
@Composable
fun HelloWorldPreview() {
Text("Hello World")
}