jetpack compose 宫格列表封装,请给出代码
时间: 2024-09-18 20:09:33 浏览: 37
Jetpack Compose 中的宫格列表(GridList)通常用于展示一系列组件,并且按照网格布局排列。以下是一个简单的例子,展示了如何使用 `Grid` 和 `Column` 来创建一个宫格列表:
```kotlin
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.layout.RowGravity.CenterStart
import androidx.compose.material.CardContent
import androidx.compose.material.CardRectangle
import androidx.compose.material.Text
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.unit.dp
fun GridListExample() {
val items = listOf(
"Item 1",
"Item 2",
"Item 3",
"Item 4",
"Item 5"
)
Column(
verticalArrangement = Arrangement.spacedBy(8.dp),
modifier = Modifier.fillMaxSize().padding(16.dp)
) {
for (item in items) {
Row(
modifier = Modifier.gridRowColumns(1, 1, 1) { span(1, 3) },
horizontalAlignment = Alignment.CenterVertically,
verticalAlignment = Alignment.CenterStart,
) {
CardRectangle(
modifier = Modifier.size(100.dp).clickable(onClick = {}), // 添加点击事件处理
shape = RoundedCornerShape(8.dp),
backgroundColor = Color.LightGray,
) {
CardContent(modifier = Modifier.padding(8.dp)) {
Text(item, style = MaterialTheme.typography.body1)
}
}
}
}
}
}
```
在这个例子中,我们首先创建了一个 `Column` 对象,它包含一个网格布局。每个 `Row` 代表一行,`gridRowColumns` 函数决定了每一行有三个等宽的列。`CardRectangle` 用于包裹每个项目,使其看起来像一个卡片。
阅读全文