如何在 Android Jetpack Compose 中创建可组合项的多个预览?
How to create multiple previews of a composable in Android Jetpack Compose?
Android Jetpack 可组合项可能有参数,如果能对单个可组合项进行多次预览以了解它如何处理不同的参数,那就太好了。让我们以一个简单的可组合对象为例:
@Composable
fun GreetingText(name: String) {
Text("Hello $name!")
}
预览可能如下所示:
@Preview
@Composable
fun GreetingTextPreview() {
GreetingText("John")
}
如何在不创建多个预览的情况下使用不同的名称预览可组合项?
单个预览可组合
一种直接的方法是在单个预览中组合多个可组合项,例如:
@Preview(showBackground = true)
@Composable
fun GreetingTextPreview() {
Column {
val names = remember {
arrayOf("John", "D'Artagnan")
}
for (name in names) {
GreetingText(name)
}
}
}
结果:
使用 PreviewParameter 进行多次预览
例如,如果可组合项太大,将多个可组合项合并到单个预览中可能不方便。另一种方法是使用 PreviewParameter,这样您将获得单独的预览:
class NameProvider: PreviewParameterProvider<String> {
override val values: Sequence<String> = sequenceOf(
"John",
"Albert Einstein"
)
}
@Preview(showBackground = true)
@Composable
fun GreetingTextPreview(
@PreviewParameter(NameProvider::class) name: String
) {
GreetingText(name)
}
结果:
但请记住,每个预览可组合项只能有一个 @PreviewParameter
。
Android Jetpack 可组合项可能有参数,如果能对单个可组合项进行多次预览以了解它如何处理不同的参数,那就太好了。让我们以一个简单的可组合对象为例:
@Composable
fun GreetingText(name: String) {
Text("Hello $name!")
}
预览可能如下所示:
@Preview
@Composable
fun GreetingTextPreview() {
GreetingText("John")
}
如何在不创建多个预览的情况下使用不同的名称预览可组合项?
单个预览可组合
一种直接的方法是在单个预览中组合多个可组合项,例如:
@Preview(showBackground = true)
@Composable
fun GreetingTextPreview() {
Column {
val names = remember {
arrayOf("John", "D'Artagnan")
}
for (name in names) {
GreetingText(name)
}
}
}
结果:
使用 PreviewParameter 进行多次预览
例如,如果可组合项太大,将多个可组合项合并到单个预览中可能不方便。另一种方法是使用 PreviewParameter,这样您将获得单独的预览:
class NameProvider: PreviewParameterProvider<String> {
override val values: Sequence<String> = sequenceOf(
"John",
"Albert Einstein"
)
}
@Preview(showBackground = true)
@Composable
fun GreetingTextPreview(
@PreviewParameter(NameProvider::class) name: String
) {
GreetingText(name)
}
结果:
但请记住,每个预览可组合项只能有一个 @PreviewParameter
。