如何解决Android撰写:Surface只能有一个直接可测量的子级
我是Jetpack的新手,我已经创建了这样的组合。
Column(
Modifier.clickable(onClick = onclick)
.fillMaxWidth().background(pastelGray)
.padding(16.dp)
) {
Card(backgroundColor = Color.Cyan) {
// Image(asset = vectorResource(id = R.drawable.ic_coupon_back),modifier = Modifier.fillMaxWidth())
Column(modifier = Modifier.padding(8.dp)) {
Text(text = coupon.couponTitle,color = Color.Red,fontSize = 20.sp)
Text(text = coupon.couponSubTitle,color = Color.Black,fontSize = 13.sp)
Text(text = coupon.couponDateTitle,color = Color.Gray,fontSize = 11.sp)
}
}
}
当我添加该评论图像时,出现此错误:
Surface can have only one direct measurable child!
直到现在我都找不到原因。
解决方法
因为您的代码中使用的Card()
可组合符号在后台使用了Surface:
@Composable
fun Card(
modifier: Modifier = Modifier,shape: Shape = MaterialTheme.shapes.medium,backgroundColor: Color = MaterialTheme.colors.surface,contentColor: Color = contentColorFor(backgroundColor),border: BorderStroke? = null,elevation: Dp = 1.dp,content: @Composable () -> Unit
) {
Surface(
modifier = modifier,shape = shape,color = backgroundColor,contentColor = contentColor,elevation = elevation,border = border,content = content
)
}
来源:Official Card Implementation code
表面是ScrollView
之类的对象,不接受多个直接子代。因此,您需要将Card()
中的代码包装到一个单独的父级中,该父级是Card
的直接子代,换句话说就是Surface
的直接子代,例如:
Card(backgroundColor = Color.Cyan) {
CardContent()
}
private fun CardContent() {
Column() {
// Image(asset = vectorResource(id = R.drawable.ic_coupon_back),modifier = Modifier.fillMaxWidth())
Column(modifier = Modifier.padding(8.dp)) {
Text(text = coupon.couponTitle,color = Color.Red,fontSize = 20.sp)
Text(text = coupon.couponSubTitle,color = Color.Black,fontSize = 13.sp)
Text(text = coupon.couponDateTitle,color = Color.Gray,fontSize = 11.sp)
}
}
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。