![](/img/trans.png)
[英]How to use a custom composable as parameter type in another custom composable?
[英]How to use sample data in Composable?
在 XML 中,我们通过使用@tools:sample/first_names等属性来使用样本名称、日期等。 有什么方法可以在 Preview Composable 中以类似的方式使用来自@tools:sample的示例数据?
您可以使用@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
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.