簡體   English   中英

Jetpack Compose 約束布局未正確鏈接

[英]Jetpack Compose Constraint Layout not linking correctly

我有一列當前有黃色圓圈,我希望此列占據紅色方塊中的空間,以便黃色圓圈在綠色圓圈和最后帶有禮物、突襲和交易的列之間等距分布。 我已將列的開始和結束鏈接到相應的列,並使其寬度填充受限區域,但正如您所看到的,列和黃色圓圈仍在左上角。 誰能看到我做錯了什么?

在此處輸入圖片說明

    ConstraintLayout {

    val (card, columnStart, columnMiddle, columnEnd) = createRefs()

    Card(
        modifier = Modifier
            .height(180.dp)
            .fillMaxWidth()
            .padding(horizontal = 16.dp, vertical = 8.dp)
            .constrainAs(card) {}
    ) {

        Column(
            modifier = Modifier
                .fillMaxHeight()
                .width(120.dp)
                .wrapContentWidth(Alignment.Start)
                .constrainAs(columnStart) {
                    top.linkTo(card.top)
                    bottom.linkTo(card.bottom)
                },
            horizontalAlignment = Alignment.CenterHorizontally
        ) {
            Image(
                modifier = Modifier
                    .size(120.dp)
                    .padding(top = 4.dp, start = 4.dp)
                    .clip(CircleShape),
                painter = painterResource(R.drawable.pokepals_logo),
                contentDescription = null
            )
            Text(
                text = profile.trainerName,
                style = MaterialTheme.typography.subtitle1
            )
        }

        Column(
            modifier = Modifier

                .constrainAs(columnMiddle) {
                    top.linkTo(card.top)
                    bottom.linkTo(card.bottom)
                    start.linkTo(columnStart.end)
                    end.linkTo(columnEnd.start)
                    width = Dimension.fillToConstraints
                }
        ) {

            Box(modifier = Modifier.wrapContentSize()) {
                PokeRepYellowBackground()
            }

        }

        Column(
            modifier = Modifier
                .padding(end = 4.dp)
                .wrapContentHeight()
                .wrapContentWidth(Alignment.End)
                .constrainAs(columnEnd) {
                    top.linkTo(card.top)
                    bottom.linkTo(card.bottom)
                    end.linkTo(card.end)
                },
            horizontalAlignment = Alignment.CenterHorizontally,
            verticalArrangement = Arrangement.spacedBy(8.dp)
        )

你可以使用類似的東西:

ConstraintLayout {

    val (card, columnStart, columnMiddle, columnEnd) = createRefs()

    Card( //..
          Modifier.constrainAs(card) {}
    ) {

        ConstraintLayout {
            Column(
                modifier = Modifier
                    .constrainAs(columnStart) {
                      //...
                    },
                horizontalAlignment = Alignment.CenterHorizontally
            ) {
                //..
            }

            Column(
                modifier = Modifier
                    .constrainAs(columnMiddle) {
                        top.linkTo(card.top)
                        bottom.linkTo(card.bottom)
                        start.linkTo(columnStart.end)
                        end.linkTo(columnEnd.start)
                        width = Dimension.fillToConstraints
                    },
                horizontalAlignment = Alignment.CenterHorizontally
            ) {
                //..
            }

            Column(
                modifier = Modifier
                    //..
                    .constrainAs(columnEnd) {
                        top.linkTo(parent.top)
                        bottom.linkTo(parent.bottom)
                        end.linkTo(parent.end)
                    },
                horizontalAlignment = Alignment.CenterHorizontally,
                verticalArrangement = Arrangement.spacedBy(8.dp)
            ) {
                //..
            }
        }
    }
}

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM