Problema
El androidx.compose.material.NavigationRail tiene en alguna documentación una alineación "centrada" opcional. No puedo lograr esto usando Jetpack Compose.
El atributo XML "antiguo" es app:menuGravity="center" según este tutorial .
Cosas que intenté sin éxito
Traté de poner NavigationRail (un contenedor simple para el widget real) en un cuadro con un conjunto de alineación:
Box(contentAlignment = Alignment.Center) { NavigationRail( selectedItem = selectedItem, onSelectItem = { selectedItem = it } ) }y poniéndolo directamente en el Composable original:
NavigationRail( modifier = modifier.width(80.dp), backgroundColor = MaterialTheme.colors.surface ) { Box(contentAlignment = Alignment.Center) { for (item in NavigationItem.values()) { NavigationRailItem( selected = selectedItem == item, onClick = { onSelectItem.invoke(item) }, icon = { Icon(item.icon, item.title) }, alwaysShowLabel = true, selectedContentColor = MaterialTheme.colors.primaryVariant, unselectedContentColor = MaterialTheme.colors.primary, label = { Text(item.title, modifier = Modifier.padding(top = 8.dp)) } ) } } }Captura de pantalla (tomada del mismo sitio que el tutorial vinculado)
Como se sugiere en el ejemplo , para centrar el contenido de navigationRail, puede usar algo como:
NavigationRail { Spacer(Modifier.weight(1f)) items.forEachIndexed { index, item -> NavigationRailItem( //.... ) } Spacer(Modifier.weight(1f)) } Para lograr una alineación inferior, simplemente use un Spacer :
NavigationRail { Spacer(Modifier.weight(1f)) items.forEachIndexed { index, item -> NavigationRailItem( //.... ) } }