build.gradle
implementation "androidx.navigation:navigation-compose:2.6.0"
MainActivity.kt
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
DefaultTheme {
GraphAppMain()
}
}
}
}
@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun GraphAppMain(){
val navController = rememberNavController()
val navItems = listOf(
NavigationItem("그래프1", Icons.Default.AddCircle, "tab1"),
NavigationItem("그래프2", Icons.Default.AddCircle, "tab2"),
NavigationItem("그래프3", Icons.Default.AddCircle, "tab3")
)
Scaffold(
bottomBar = {
BottomAppBar {
Row(
modifier = Modifier.fillMaxWidth(),
horizontalArrangement = Arrangement.SpaceAround
) {
navItems.forEach { nav ->
// 현재 route
val currentRoute = navController.currentBackStackEntryAsState().value?.destination?.route
Column(
verticalArrangement = Arrangement.Center,
horizontalAlignment = Alignment.CenterHorizontally,
modifier = Modifier.clickable {
navController.navigate(nav.route)
}
) {
// Ture -> 현재 클릭된 탭
// Flase -> 현재 클릭되지 않은 탭
val isCurrentRoute = nav.route == currentRoute
Icon(
imageVector = nav.icon,
contentDescription = nav.name,
tint = if (isCurrentRoute) Color.Red else Color.Black
)
Text(
text = nav.name,
color = if (isCurrentRoute) Color.Red else Color.Black
)
}
}
}
}
}
) { paddingValues ->
NavHost(
navController = navController,
startDestination = navItems.first().route,
modifier = Modifier.padding(paddingValues)
){
composable("tab1") {
Graph1()
}
composable("tab2") {
Graph2()
}
composable("tab3") {
Graph3()
}
}
// Box(
// modifier = Modifier.padding(paddingValues)
// ) {
// Text(text = "임시 텍스트")
// }
}
}
data class NavigationItem(
val name : String,
val icon : ImageVector,
val route : String
)
@Preview(showBackground = true)
@Composable
fun GreetingPreview() {
DefaultTheme {
GraphAppMain()
}
}