撰写水平分页器始终填充最大尺寸,垂直对齐不起作用

Naz*_*ets 10 android android-jetpack-compose jetpack-compose-accompanist

我正在使用Google 的 Accompanist Horizo​​ntal Pager,并且我需要寻呼机来包装内容大小。由于某种原因它填满了最大尺寸。目前它是约束布局的子级,但是我尝试将其放入具有Modifier.weight(1f)相同结果的另一个列内。另外,verticalAlignment 不起作用,孩子居中。

截屏; 绿色-寻呼机,红色-它是孩子。

撰写版本:1.0.5;寻呼机版本:0.21.3-beta

HorizontalPager(
            state = stickerBookState.pagerState,
            modifier = Modifier
                .constrainAs(pager) {
                    top.linkTo(pagerNavigator.bottom, 16.dp)
                    linkTo(parent.start, parent.end)
                    height = Dimension.wrapContent // for whatever reason it's actual size if fillConstraints / fillMaxSize
                    width = Dimension.fillToConstraints
                }.background(PmColors.CompletedGreen),
            verticalAlignment = Alignment.Top, // this one also doesn't seem to work
            count = model.pages.size,
        ) { pageIndex ->
            val pageData = model.pages[pageIndex]
            @OptIn(ExperimentalFoundationApi::class)
            LazyVerticalGrid(
                modifier = Modifier
                    .wrapContentSize()
                    .background(PmColors.AlertRed),
                cells = GridCells.Fixed(2)
            ) {
                items(pageData) { holderData ->
                    Box(
                        modifier = Modifier
                            .padding(bottom = 24.dp)
                            .fillMaxWidth()
                            .wrapContentHeight(),
                        contentAlignment = Alignment.Center
                    ) {
                        // some composable
                    }
                }
            }
        }
Run Code Online (Sandbox Code Playgroud)

Aeg*_*gir 12

该错误已在0.21.4版本中修复:

[Pager] 允许 Horizo​​ntalPager 环绕内容高度,VerticalPager 环绕内容宽度...

修改示例中的代码可以达到预期的效果:

private fun Sample() {
Scaffold(
    ...
) {
    Column(Modifier.fillMaxSize()) {
            ...
         HorizontalPager(
            ...
            verticalAlignment = Alignment.Top, //add this
            modifier = Modifier
                .wrapContentHeight() //and this
                .fillMaxWidth()
        ) { page ->
            ...
        }

        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

}

在此输入图像描述

  • 不适合我 (2认同)