Android Compose:LazyColumn和垂直滚动的Column之间的区别



我试图寻找将LazyColumnColumnverticalScroll一起使用的原因。它们之间有什么区别?比如为什么一个比另一个更理想。它们都使屏幕可滚动,不是吗?在任何情况下,选择一个而不是另一个都是错误的吗?

LazyColumn是Compose的RecyclerView对应项,而Column with verticalScroll是ScrollView对应项。

任何具有垂直滚动的Column内部的Composable都会在Column被组合的那一刻进入组合,而LazyColumn使用SubcomposeLayout在屏幕上对Composable进行子组合,当您到达屏幕上最后一个可见项目时,会额外添加一个。

此外,LazyColumn提供了一些Column没有的功能

flingBehavior: FlingBehavior = ScrollableDefaults.flingBehavior()

让我们让您轻松实现flingBehavior,特别是使用1.3.0-beta02快照行为可以使用rememberSnapFlingBehavior((实现

此外,rememberLazyListState()提供了有关第一个项目索引、偏移量和布局信息以及可见项目的信息,与rememberScrollState()相比,这可以实现更多的自定义,比如使用可见项目位置的颜色和比例动画。

LazyColumn

LazyColumn是一个垂直滚动的列表,它只组成和排列当前可见的项目。它类似于经典的Android View系统中的Recyclerview。

列将显示前一个子项之下的每个子项。它类似于具有垂直方向的LinearLayout。

想象一下,您想要显示大量项目数未知的数据。如果您决定使用列/行布局,这可能会转化为许多性能问题,因为无论是否可见,所有项目都将组成。Lazy选项允许您在组件可见时对其进行布局。当处理列表/网格中的大量元素时,可以获得更好的性能

最新更新