android 滚动列表期间重新组合项

vq8itlhq  于 2022-11-27  发布在  Android
关注(0)|答案(1)|浏览(118)

在我的屏幕上,我有MyTopItem()和以下的项目列表。当我开始滚动我的列表,我想隐藏MyTopItem()
它工作正常,但滚动是如此滞后。这是因为在滚动所有项目在MyLazyVerticalGridItemsSection()重组。
如何避免在滚动时重新排版?

Column(Modifier.fillMaxSize()) {
    val listState = rememberLazyListState()

    AnimatedVisibility(
        visible = listState.firstVisibleItemScrollOffset < 1,
        enter = expandVertically(),
        exit = shrinkVertically()
    ) {
        MyTopItem()
    }
    MyLazyVerticalGridItemsSection(
        items = myItems,
        listState = listState
    )
}
kg7wmglp

kg7wmglp1#

发生这种情况是因为您直接使用listState.firstVisibleItemScrollOffset,所以每次该值更改时,都会触发重新组合。
在这种情况下,应该使用derivedStateOf-它只会在计算结果改变时触发重组:

val visible by derivedStateOf { listState.firstVisibleItemScrollOffset < 1 }

相关问题