Android Jetpack Compose LazyColumn的项目装饰是什么?
在JetpackCompose中,我们可以使用Android Jetpack Compose LazyColumn的项目装饰是什么?,android,android-recyclerview,android-jetpack-compose,item-decoration,android-jetpack-compose-list,Android,Android Recyclerview,Android Jetpack Compose,Item Decoration,Android Jetpack Compose List,在JetpackCompose中,我们可以使用LazyColumnFor作为RecyclerView 在RecyclerView中,为了在项目之间有适当的边距/填充,我们需要使用ItemDecoration,如下所示 如下 class MarginItemDecoration(private val spaceHeight: Int) : RecyclerView.ItemDecoration() { override fun getItemOffsets(outRect: Rect,
LazyColumnFor
作为RecyclerView
在RecyclerView
中,为了在项目之间有适当的边距/填充,我们需要使用ItemDecoration
,如下所示
如下
class MarginItemDecoration(private val spaceHeight: Int) : RecyclerView.ItemDecoration() {
override fun getItemOffsets(outRect: Rect, view: View,
parent: RecyclerView, state: RecyclerView.State) {
with(outRect) {
if (parent.getChildAdapterPosition(view) == 0) {
top = spaceHeight
}
left = spaceHeight
right = spaceHeight
bottom = spaceHeight
}
}
}
对于JetpackCompose
LazyColumnFor
,ItemEdition
的等价物是什么?我使用LazyColumnFor
的contentPadding
的作为所有项目的底部填充
@Composable
fun MyComposeList(
modifier: Modifier = Modifier,
listItems: List<String>,
) {
LazyColumnFor(
modifier = modifier, items = listItems,
contentPadding = PaddingValues(16.dp, 16.dp, 16.dp)
) { itemText ->
ViewItem(
itemText = itemText
)
Spacer(modifier = Modifier.fillMaxWidth().height(16.dp))
}
}
@Composable
有趣的作曲家(
修饰符:修饰符=修饰符,
列表项:列表,
) {
懒散的(
修饰符=修饰符,项=列表项,
contentPadding=填充值(16.dp、16.dp、16.dp)
){itemText->
视图项(
itemText=itemText
)
间隔符(修饰符=修饰符.fillMaxWidth().height(16.dp))
}
}
这似乎得到了我所需要的结果,因为contentPadding
可以在LazyColumnFor
中一起滚动,您可以使用LazyColumn
和itemsIndexed
(以前是LazyColumnForIndexed
,不推荐使用)并根据索引应用填充
LazyColumn{
itemsIndexed(items=…){索引,item->
框(修改器。填充)(
开始=16.dp,结束=16.dp,底部=16.dp,顶部=如果(指数==0)16.dp否则0.dp
))
}
}
使用1.0.0
(使用1.0.0-beta07测试)可用于在项目之间添加间距
比如:
LazyColumn(
verticalArrangement = Arrangement.spacedBy(8.dp),
) {
// ...
}
下面的示例在每个项目之间添加了8.dp
前后:
如果要在内容边缘添加填充,可以使用contentPadding
参数
LazyColumn(
verticalArrangement = Arrangement.spacedBy(8.dp),
contentPadding = PaddingValues(horizontal = 24.dp, vertical = 8.dp)
){ ... }
在上面的示例中,第一个项目将在顶部添加8.dp
填充,最后一个项目将在底部添加8.dp
,所有项目的左右两侧都将添加24.dp
填充
太好了。谢谢它是否也允许在两者之间绘制任何图形(即,item decorator不仅允许填充,还允许任何图形,如线条)。@Elye目前它仅提供内容间距。其他装饰程序当前的解决方法是将它们放在items/item
块的内容中