Material Design short navigation bar.
ShortNavigationBarSample
@Preview
@Composable
fun ShortNavigationBarSample() {
var selectedItem by remember { mutableIntStateOf(0) }
val items = listOf("Songs", "Artists", "Playlists")
val selectedIcons = listOf(Icons.Filled.Home, Icons.Filled.Favorite, Icons.Filled.Star)
val unselectedIcons =
listOf(Icons.Outlined.Home, Icons.Outlined.FavoriteBorder, Icons.Outlined.StarBorder)
ShortNavigationBar {
items.forEachIndexed { index, item ->
ShortNavigationBarItem(
icon = {
Icon(
if (selectedItem == index) selectedIcons[index] else unselectedIcons[index],
contentDescription = null,
)
},
label = { Text(item) },
selected = selectedItem == index,
onClick = { selectedItem = index },
)
}
}
}
ShortNavigationBarWithHorizontalItemsSample
@Preview
@Composable
fun ShortNavigationBarWithHorizontalItemsSample() {
var selectedItem by remember { mutableIntStateOf(0) }
val items = listOf("Songs", "Artists", "Playlists")
val selectedIcons = listOf(Icons.Filled.Home, Icons.Filled.Favorite, Icons.Filled.Star)
val unselectedIcons =
listOf(Icons.Outlined.Home, Icons.Outlined.FavoriteBorder, Icons.Outlined.StarBorder)
Column {
Text(
"Note: this is configuration is better displayed in medium screen sizes.",
Modifier.padding(16.dp),
)
Spacer(Modifier.height(32.dp))
ShortNavigationBar(arrangement = ShortNavigationBarArrangement.Centered) {
items.forEachIndexed { index, item ->
ShortNavigationBarItem(
iconPosition = NavigationItemIconPosition.Start,
icon = {
Icon(
if (selectedItem == index) selectedIcons[index]
else unselectedIcons[index],
contentDescription = null,
)
},
label = { Text(item) },
selected = selectedItem == index,
onClick = { selectedItem = index },
)
}
}
}
}