Code: Select all
@Preview(showBackground = true, widthDp = 320, heightDp = 320)
@Composable
private fun ModuleGrid() {
val modules = ModuleRegistry.getModulesList().toMutableList()
Box(
contentAlignment = Alignment.Center) {
LazyVerticalGrid(
modifier = Modifier.fillMaxHeight().widthIn(120.dp),
columns = GridCells.Adaptive(minSize = 96.dp),
horizontalArrangement = Arrangement.Center,
verticalArrangement = Arrangement.Center
) {
items(modules,
key = { it.namedTag }
) {
Card(
colors = CardDefaults.cardColors(
containerColor = Color.Transparent
),
modifier = Modifier
.size(120.dp)
.background(Color.Transparent)
.clickable {
launchModule(it)
}
) {
Column(
modifier = Modifier.fillMaxSize(),
verticalArrangement = Arrangement.Center,
horizontalAlignment = Alignment.CenterHorizontally
) {
it.displayIcon?.let { icon ->
Image(
painter = painterResource(id = icon),
contentDescription = it.displayName,
contentScale = ContentScale.Fit,
modifier = Modifier
.size(96.dp)
.padding(4.dp)
.align(Alignment.CenterHorizontally)
)
}
Text(text = it.displayName, modifier = Modifier
.align(Alignment.CenterHorizontally))
}
}
}
}
}
}
Dieses Element sollte in der Mitte des Bildschirms angezeigt werden. src = "https://i.static.net/dc3ed.png"/>
Ich habe versucht, das horizontale Raster zu verwenden, aber schließlich ein ähnliches Ergebnis erhalten.