【发布时间】:2021-04-17 20:01:29
【问题描述】:
在 XML 中,我们通过使用 @tools:sample/first_names 等属性来使用示例名称、日期等。 有什么方法可以在 Preview Composable 中以类似的方式使用来自 @tools:sample 的示例数据?
【问题讨论】:
标签: android android-jetpack android-jetpack-compose
在 XML 中,我们通过使用 @tools:sample/first_names 等属性来使用示例名称、日期等。 有什么方法可以在 Preview Composable 中以类似的方式使用来自 @tools:sample 的示例数据?
【问题讨论】:
标签: android android-jetpack android-jetpack-compose
您可以使用@PreviewParameter。
例如:
data class Obj(val name :String,val count:Int)
@Composable
fun ObjCard(obj:Obj) {
Card(
Modifier.width(100.dp).height(50.dp)){
Column(
verticalArrangement = Arrangement.Center,
horizontalAlignment = Alignment.CenterHorizontally)
{
Text("Name = " +obj.name)
Text("Count = " +obj.count)
}
}
}
在这种情况下,您可以实现PreviewParameterProvider 接口并创建如下内容:
class SampleObjProvider: PreviewParameterProvider<Obj> {
override val values = sequenceOf(
Obj("Obj1",10),
Obj("Obj2",70))
override val count: Int = values.count()
}
最后将@PreviewParameter 应用到ObjCard 可组合:
@Preview(showBackground = true)
@Composable
fun ObjCard(@PreviewParameter(SampleObjProvider::class) obj:Obj) {
//..same code
}
【讨论】: