【发布时间】:2021-09-28 17:37:57
【问题描述】:
我有一个包含多个LazyRow 的LazyColumn。在旧术语中,嵌套的 RecyclerView。
我的问题是,LazyColumn 在移动到新的可组合(不同的选项卡)时不会恢复滚动状态。但是内部LazyRows 恢复了他们的状态。
例如,打开主屏幕,滚动到底部,然后滚动 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滚动状态?
【问题讨论】:
标签: android kotlin android-jetpack-compose android-jetpack-compose-list lazycolumn