我有一个可合成的,如下:
@Composable
private fun MoviePosterWithRating(movie: MovieModel) {
Box {
Image(<...>)
Box( //Rating circle
contentAlignment = Alignment.Center,
modifier = Modifier
.padding(end = 8.dp, top = 220.dp)
.size(48.dp)
.background(Color.Black, shape = CircleShape)
.align(Alignment.TopEnd)
) {
CircularProgressIndicator(
progress = movie.score / 10,
color = percentageCircleColor(movie.score),
strokeWidth = 2.dp
)
Text(
text = "${movie.score.asPercentage()}%",
color = Color.White,
textAlign = TextAlign.Center,
fontSize = 13.sp,
modifier = Modifier.padding(4.dp)
)
}
}我想把评级圈提取到它自己的方法中,这样我就可以重用它了。但是,我不能,因为对齐on修饰符。我可以传递整个修饰符作为一个参数,但我将只是传递相同的填充,大小和背景颜色每次。有没有一种方法可以让我传递修饰符的.align部分?
发布于 2021-12-01 21:54:47
您应该这样做的方式是让您的可组合接受Modifier作为参数,这样您就可以在调用点传递它,从而使您的可组合变得更加灵活:
@Composable
fun RatingCircle(
modifier: Modifier = Modifier,
// other attributes
) {
Box(
modifier = modifier,
) {
// other composables
}
}然后你就这样称呼它
Box {
Image(<...>)
RatingCircle(
modifier = Modifier.align(/* alignment */)
)
}https://stackoverflow.com/questions/70191571
复制相似问题