我们在上一章回中介绍了Jetpack中底部导航栏相关的内容,本章回中主要介绍 滑动列表。闲话休提,让我们一起Talk Android Jetpack吧!
1. 概念介绍
我们先看一个场景:大家在使用手机时会打开联系人查找某位朋友,由于联系人比较多需要上下滑动才可以找到这位朋友,显示这么多联系人的页面就是滑动列表,它有两个特点:
- 每行显示相同或者相似的内容;
- 内容超过手机屏幕时可以滑动显示;
如果使用View开发Android时可以通过ListView
或者RecycleView
组件实现滑动列表,如果使用Compose开发时可以通过LazyColumn
可组合函数实现滑动列表,本章回中将详细介LazyColumn这种滑动列表的使用方法。
2. 使用方法
可组合函数LazyColumn
主要控制滑动列表,列表中的成员需要通过可组合函数Item控制。接下来我们分别介绍这两个可组合函数。
2.1 函数参数
可组合函数LazyColumn提供了相关的参数来控制列表,下面是常用的参数:
- contentPadding参数:主要用来控制列表内容的间距,它会影响滑动列表中所有的内容;
- reverseLayout参数:表示是否把列表内容倒置,默认值为false,表示正常显示列表中的内容;
- userScrollEnabled参数:表示是否让滑动列表中的内容滚动显示,默认值为true,表示可以滑动显示;
- content参数:用来存滑动列表中的内容,它的类型是LazyListScope.() -> Unit,需要通过item函数来赋值;
除了上面介绍的参数外,该函数和Column函数拥有一些共同的参数,比如控制对齐的horizontalAlignment
和verticalArrangement
参数,这些参数的功能我们在Column函数中介绍过,这里就详细介绍了,如果有看官忘记的话可以点击这里查看以前的内容。
2.2 列表成员
列表成员通过Item
和Items
函数来实现,通常使用尾lambda语法把它放到LazyColumn
函数中,还有一个Items函数,它与Item的区别在于可以把整个列表当作滑动列表的成员,相当于是列表赋值。
这两个函数没有太多的参数,只有一个content
参数比较常用,稍后我们将通过示例代码来演示这两个函数的使用方法。
3. 示例代码
LazyColumn(
//需要通过scaffold传递的参数来设置顶部的边距,不然topBar会和mainScreen中的内容重叠
modifier = Modifier.padding( top = paddingValues.calculateTopPadding()),
contentPadding = PaddingValues(horizontal = 16.dp),
//指定list内容之间的间隔
verticalArrangement = Arrangement.spacedBy(8.dp),
//控制列表是否能够滚动,默认值为true,表示可以滚动
userScrollEnabled = false
) {
//不能直接使用可组合函数赋值,需要借助item函数
// Text(text = "this is a list")
item {
Text(text = "this is a list")
}
//指定list的数量,并且添加分隔线
items( count = 9, itemContent = { index ->
Text(text = "This is item ${index+1}")
Divider(color = Color(0.1f,0.8f,0.9f,1.0f))
})
//通过items直接使用list
items(strList){ item ->
Text(text = item )
}
}
上面的示例代码中演示了LazyCloumn
以及item
和Items
三个函数的用法,我们在代码中关键位置添加了注释,这样方便大家理解代码。编译并且运行上面的程序可以得到以下运行效果图。图中还包含一个TopBar,大家可以参考TopBar的内容去编写。
4. 内容扩展
我们在上面介绍的滑动列表是垂直滚动的滑动列表,还一种水平滚动的滑动列表,它通过LazyRow
可组合函数实现,该函数的用法和LazyColumn
函数的用法十分相似,因此我就不再介绍了。
我们再讨论一下滑动列表的性能,按照官方文档的说法,它只会加载需要显示在页面上的成员,因此性能比较高,它的原理类似于Android View中的RecyclerView
,我们在这里只介绍基本的用法,以后有机会了再深入讨论与性能相关的知识。
5. 内容总结
最后,我们对本章回中的内容做一个全面的总结:
- 滑动列表通过可组合函数LazyColumn和LazyRow实现;
- 滑动列表中的成员通过可组合函数Item或者Items实现;
- 滑动列表中的成员数量比较多时,它也会表现出良好的性能;
看官们,与Jetpack中滑动列表相关的内容就介绍到这里,欢迎大家在评论区交流与讨论!