0

我正在尝试创建一个带有粘性行(其中自身包含列)和每行第一列粘性的表。由于表格可能需要呈现的数据量,我不得不放弃使用常规列和行的想法,而是将注意力转向 Lazy 版本。

表的总体布局

我已经到了一般布局有效并且垂直滚动行为正确的地步。但是,目前每一行都是单独滚动的......

滚动单个行... 在标题行上滚动...

我附上了实现此行为的代码(将其展平并仅显示一个“部分”。想法是此代码将为每个新的垂直标题/应该一起滚动的行组重复)

MdcTheme {
    LazyColumn(Modifier.background(color = colorResource(abc.testing.core.R.color.background_color)).fillMaxSize()) {
        stickyHeader {
            ComposeColumn {
                Text(
                    modifier = Modifier
                        .background(Color.Blue)
                        .padding(8.dp)
                        .fillMaxWidth(),
                    textAlign = TextAlign.Center,
                    color = Color.White,
                    text = "Header Vertical"
                )
                LazyRow {
                    stickyHeader {
                        Text(
                            modifier = Modifier
                                .background(Color.Blue)
                                .padding(8.dp)
                                .width(100.dp)
                                .height(50.dp),
                            textAlign = TextAlign.Center,
                            color = Color.White,
                            text = "Header"
                        )
                    }

                    itemsIndexed(listOf("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17")) { index, column ->
                        Text(
                            modifier = Modifier
                                .background(Color.Blue)
                                .padding(8.dp)
                                .width(100.dp)
                                .height(50.dp),
                            textAlign = TextAlign.Center,
                            color = Color.White,
                            text = "Header Column = $column"
                        )
                    }
                }
            }
        }

        itemsIndexed(listOf("1", "2")) { index, row ->
            LazyRow {
                stickyHeader {
                    Text(
                        modifier = Modifier
                            .background(Color.Blue)
                            .padding(8.dp)
                            .width(100.dp)
                            .height(100.dp),
                        textAlign = TextAlign.Center,
                        color = Color.White,
                        text = "Header"
                    )
                }

                itemsIndexed(listOf("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17")) { index, column ->
                    Text(
                        modifier = Modifier
                            .padding(8.dp)
                            .background(Color.Red)
                            .width(100.dp)
                            .height(100.dp),
                        textAlign = TextAlign.Center,
                        color = Color.White,
                        text = "Row $row Column = $column"
                    )
                }
            }
        }
    }
}

当任何其他 LazyRows 滚动时,如何让每个 LazyRow 滚动,以及在第一次加载时从同一位置开始,使用 compose?甚至可能吗?我是否必须放弃当前的实施方法并寻找另一种方法?如果是这样,从哪里开始?在线提供的网格解决方案只能解决单向滚动,我还没有设法创建所需的粘性行为,如所附图片......请帮助我!

4

0 回答 0