kotlin 惰性列内的惰性水平网格

iyfjxgzm  于 2022-12-30  发布在  Kotlin
关注(0)|答案(1)|浏览(130)
    • bounty将在6天后过期**。回答此问题可获得+50的声誉奖励。mrzbn正在寻找来自声誉良好来源的答案

我有一个LazyColumn,我想在其中显示一个水平行和两列,所以我尝试LazyHorizontalGrid来实现它。但我的应用程序崩溃的例外-IllegalArgumentException: LazyHorizontalGrid's height should be bound by parent。下面是我的代码我正在使用,任何人都可以请帮助修复它或任何其他方法,我可以使一行有两列。

@Composable
fun HomeItem1() {
    Surface(modifier = Modifier.nestedScroll(rememberViewInteropNestedScrollConnection())) {
        LazyColumn {
            //other contents
            item {
                LazyHorizontalGrid(
                    rows = GridCells.Fixed(3),
                    horizontalArrangement = Arrangement.spacedBy(16.dp),
                    verticalArrangement = Arrangement.spacedBy(16.dp)
                ) {
                    items(arrayList.size) {
                        Text(arrayList[it])
                    }
                }
            }
        }
    }
}
pdsfdshx

pdsfdshx1#

您只需要事先计算栅格的高度。

@Composable
    fun HomeItem1() {
        Surface(modifier = Modifier.nestedScroll(rememberViewInteropNestedScrollConnection())) {
        LazyColumn {
            //other contents
            item {
                LazyHorizontalGrid(
                    modifier = Modifier.height(176.dp), // itemHeight * rowCount + verticalSpacing * (rowCount - 1)
                    rows = GridCells.Fixed(3),
                    horizontalArrangement = Arrangement.spacedBy(16.dp),
                    verticalArrangement = Arrangement.spacedBy(16.dp)
                ) {
                    items(arrayList.size) {
                        Text(arrayList[it], modifier = Modifier.height(48.dp))
                    }
                }
            }
        }
    }
}

相关问题