我有一个包含多个 LazyColumn
的 LazyRow
。用旧的术语来说,嵌套的 RecyclerView。
我的问题是,LazyColumn
在移动到新的组合(不同的标签)时不会恢复滚动状态。但内部 LazyRow
会恢复它们的状态。
例如,打开主屏幕,滚动到底部,然后滚动 LazyRow
以结束,然后打开另一个标签并再次返回到主页标签。 LazyColumn
从顶部开始(不恢复状态)但最后一个 LazyRow
恢复它的滚动状态。
包含 LazyColumn
@Composable
fun HomeScreen(
homeViewModel: HomeViewModel = hiltViewModel()
) {
val scrollState = rememberLazyListState()
LazyColumn(contentPadding = PaddingValues(vertical = 8.dp),
horizontalAlignment = Alignment.Start,
verticalArrangement = Arrangement.spacedBy(8.dp),
state = scrollState,
modifier = Modifier
.fillMaxSize()
.background(MaterialTheme.colors.background)
) {
items(5) {
TopRatedProducts(homeViewModel = homeViewModel)
}
}
}
包含 LazyRow
的 TopRatedProducts
@Composable
fun TopRatedProducts(
homeViewModel: HomeViewModel = hiltViewModel()
) {
val topRatedProducts by rememberFlowWithLifecycle(homeViewModel.topRatedProducts)
.collectAsState(initial = emptyList())
LazyRow(
contentPadding = PaddingValues(horizontal = 8.dp), // Space between start and end
verticalAlignment = Alignment.CenterVertically,
horizontalArrangement = Arrangement.spacedBy(8.dp), // Space between items
modifier = Modifier
.background(Color.Green)
) {
items(topRatedProducts) {
ProductCardItem(item = it)
}
}
}
如何恢复 LazyColumn
滚动状态?