如何在 Android Jetpack Compose 中创建可组合的多个预览?

时间:2021-01-26 14:12:07

标签: android android-jetpack android-jetpack-compose

Android Jetpack 可组合项可能有参数,如果可以对单个组合项进行多次预览以了解它如何处理不同的参数,那就太好了。让我们以一个简单的可组合为例:

@Composable
fun GreetingText(name: String) {
    Text("Hello $name!")
}

预览可能如下所示:

@Preview
@Composable
fun GreetingTextPreview() {
    GreetingText("John")
}

如何在不创建多个预览的情况下使用不同的名称预览可组合?

1 个答案:

答案 0 :(得分:1)

可组合的单个预览

一种直接的方法是在单个预览中组合多个可组合项,例如:

@Preview(showBackground = true)
@Composable
fun GreetingTextPreview() {
    Column {
        val names = remember {
            arrayOf("John", "D'Artagnan")
        }

        for (name in names) {
            GreetingText(name)
        }
    }
}

结果:

enter image description here

使用 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)
}

结果:

enter image description here

但请记住,每个可组合预览只能有一个 @PreviewParameter