![](/img/trans.png)
[英]How to show items of lazylist out of the Card in Jetpack Compose
[英]Jetpack Compose: How to wrap list items inside a Card
我有一個屏幕,我需要在其中顯示一個標題和一個包裹在卡片視圖中的項目列表。 整個屏幕必須是可滾動的(如下圖所示)。
我知道如何使用可滾動的列來做到這一點,但我希望能夠使用LazyColumn
(因為由於視圖的復雜性,每個列表項都有自己的 ViewModel,我認為 LazyColumn 會更節省資源)。 對於標題,我可以使用item
,對於列表,我可以使用items
。 下面是我試過的代碼:
@Composable
fun Screen(
items: List<String>
) {
Column(
Modifier.fillMaxSize()
) {
TopAppBar(title = { Text(text = "My Activity") })
LazyColumn {
// Header
item {
Text("Title", Modifier.padding(32.dp))
}
// I cannot use Box in this way here
Box(Modifier.padding(32.dp)) {
Card {
items(items.size) {
Text("Item $it")
}
}
}
}
}
}
該代碼的問題在於我無法將列表項包裝在卡片視圖中,因為Card
不是LazyListScope
。 使用 LazyColumn,如何將列表項包裝在卡片中?
你可以定義你的“卡”作為一個單一的item
包含嵌套的items
。
items
是LazyListScope
一部分,您需要使用 kotlin 明確this
例如this@LazyColumn
@Composable
fun Screen(
items: List<String>
) {
Column(
Modifier.fillMaxSize()
) {
TopAppBar(title = { Text(text = "My Activity") })
LazyColumn( Modifier.fillMaxSize()) {
// Header
item {
Text("Title", Modifier.padding(32.dp))
}
// Single item
item {
// Your Box list here
Box(Modifier.padding(32.dp)) {
Card {
this@LazyColumn.items(items.size) {
Text("Item $it")
}
}
}
}
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.