首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将Modifier.align作为参数传递

将Modifier.align作为参数传递
EN

Stack Overflow用户
提问于 2021-12-01 21:41:44
回答 1查看 398关注 0票数 1

我有一个可合成的,如下:

代码语言:javascript
复制
@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部分?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-01 21:54:47

您应该这样做的方式是让您的可组合接受Modifier作为参数,这样您就可以在调用点传递它,从而使您的可组合变得更加灵活:

代码语言:javascript
复制
@Composable
fun RatingCircle(
    modifier: Modifier = Modifier,
    // other attributes
) {
    Box(
        modifier = modifier,
    ) {
        // other composables
    }
}

然后你就这样称呼它

代码语言:javascript
复制
Box {
    Image(<...>)
    RatingCircle(
        modifier = Modifier.align(/* alignment */)
    )
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70191571

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档