小工具知识网

当前位置: 首页 > 行业知识 > Android JetPack Compose实现底部导航栏,material3

行业知识

Android JetPack Compose实现底部导航栏,material3

2026-11-09 06:07:52 来源:互联网转载

Android JetPack Compose实现底部导航栏,material3

          • 1.Scaffold + NavigationBar + NavigationBarItem
          • 2.案例实现
            1.Scaffold + NavigationBar + NavigationBarItem

            Scaffold:脚手架,有topBar,bottomBar等参数

            NavigationBar:用于实现导航栏主体

            NavigationBarItem:用于实现导航栏的单个实例

            2.案例实现
            import android.annotation.SuppressLintimport androidx.compose.material.icons.Iconsimport androidx.compose.material.icons.filled.DateRangeimport androidx.compose.material.icons.filled.Homeimport androidx.compose.material.icons.filled.Personimport androidx.compose.material3.ExperimentalMaterial3Apiimport androidx.compose.material3.Iconimport androidx.compose.material3.NavigationBarimport androidx.compose.material3.NavigationBarItemimport androidx.compose.material3.NavigationBarItemDefaultsimport androidx.compose.material3.Scaffoldimport androidx.compose.material3.Textimport androidx.compose.runtime.Composableimport androidx.compose.runtime.getValueimport androidx.compose.runtime.mutableStateOfimport androidx.compose.runtime.rememberimport androidx.compose.runtime.setValueimport androidx.compose.ui.graphics.Colorimport com.xyh.app.model.entity.NavigationItemdata class NavigationItem(val label: String, val icon: ImageVector)@SuppressLint("UnusedMaterial3ScaffoldPaddingParameter")@OptIn(ExperimentalMaterial3Api::class)@Composablefun MainFrame(){// 数据    val navigationItems = listOf(        NavigationItem("Home", Icons.Filled.Home),        NavigationItem("News", Icons.Filled.DateRange),        NavigationItem("我的", Icons.Filled.Person)    )    // remember    var currentNavigationIndex by remember {        mutableStateOf(0)    }    Scaffold (        bottomBar = {            NavigationBar(                containerColor = Color.White            ) {                navigationItems.forEachIndexed { index, navigationItem->                    NavigationBarItem(                        selected = currentNavigationIndex == index,                         onClick = {                                  currentNavigationIndex = index                        },                        icon = { // 图标                            Icon(                                imageVector = navigationItem.icon,                                contentDescription = null                            )                        },                        label = { // 文字                            Text(text = navigationItem.title)                        },                        alwaysShowLabel = false,                        colors = NavigationBarItemDefaults.colors( // 颜色配置                            selectedIconColor = Color(0xff149ee7),                            selectedTextColor = Color(0xff149ee7),                            unselectedIconColor = Color(0xff999999),                            unselectedTextColor = Color(0xff999999)                        )                    )                }            }        }    )    {        Text(text = "current navigation item: ${currentNavigationIndex}")    }}

上一篇:服务器怎么启动快点的软件?

下一篇:微服务之SpringCloud配置中心的搭建与热部署实现