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()
    }
}