Jetpack Compose报错:Unresolved reference: BottomNavigation 求助
问题原因
- 你使用的是Material 3版本的
Scaffold(从ExperimentalMaterial3Api注解可判断),但BottomNavigation是Material 2的专属组件。Material 3库已废弃该组件,替换为NavigationBar。 - Android Studio Flamingo默认的Compose模板会引入Material 3依赖,因此项目中无法识别Material 2的
BottomNavigation。
修复方案
提供两种可选方案:
方案一:改用Material 3的NavigationBar(推荐)
直接将BottomNavigation替换为Material 3的NavigationBar,同时适配参数命名变更:
class MainActivity : ComponentActivity() { @SuppressLint("UnusedMaterial3ScaffoldPaddingParameter") @OptIn(ExperimentalMaterial3Api::class) override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { BottomNavTheme { Scaffold(bottomBar = { // 替换为Material 3的NavigationBar NavigationBar( containerColor = colorResource(id = R.color.teal_200), contentColor = Color.Black ) { // 此处添加NavigationBarItem实现底部导航项 } }) { } } } }
注意:Material 3中backgroundColor参数已更名为containerColor,符合Material Design 3的设计规范。
方案二:添加Material 2依赖(仅兼容旧代码时使用)
若必须保留BottomNavigation,需在模块级build.gradle中添加Material 2的Compose依赖:
dependencies { // 保留原有Material 3依赖,新增Material 2依赖 implementation "androidx.compose.material:material:1.5.0" // 其他项目依赖... }
然后在代码中明确导入Material 2的BottomNavigation:
import androidx.compose.material.BottomNavigation
API变更说明
Jetpack Compose的Material 3库为贴合Material Design 3设计语言,对组件和参数做了针对性调整:
BottomNavigation→NavigationBarBottomNavigationItem→NavigationBarItem- 颜色参数如
backgroundColor统一调整为containerColor,contentColor保留但作用更明确
内容的提问来源于stack exchange,提问作者a.hess
相关产品推荐
相关产品推荐

