import androidx.compose.foundation.background
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.lazy.grid.GridCells
import androidx.compose.foundation.lazy.grid.LazyVerticalGrid
import androidx.compose.foundation.lazy.grid.items
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Surface
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.unit.dp
@Composable
fun PhotoGalleryGrid() {
val photos = List(12) { "Photo ${it + 1}" }
LazyVerticalGrid(
columns = GridCells.Fixed(3),
modifier = Modifier
.fillMaxSize()
.padding(8.dp),
contentPadding = PaddingValues(8.dp),
verticalArrangement = Arrangement.spacedBy(12.dp),
horizontalArrangement = Arrangement.spacedBy(12.dp)
) {
items(photos) { photo ->
Column(
horizontalAlignment = Alignment.CenterHorizontally,
modifier = Modifier.fillMaxWidth()
) {
Surface(
modifier = Modifier
.size(100.dp)
.background(Color.LightGray),
color = Color.LightGray
) {
// Image placeholder box
}
Spacer(modifier = Modifier.height(4.dp))
Text(text = photo, style = MaterialTheme.typography.bodyMedium)
}
}
}
}This solution uses LazyVerticalGrid with 3 fixed columns to create a scrollable grid layout. We create a list of 12 photo titles named "Photo 1" to "Photo 12". Each grid item is a Column with a gray Surface box as an image placeholder sized 100dp by 100dp, and below it a Text showing the photo title. Padding and spacing are added for neat layout. The grid scrolls vertically by default.