You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android底部导航栏选中/未选中状态设置无效且崩溃

解决BottomNavigationView使用Selector时的Inflate崩溃问题

嘿,我来帮你排查这个问题!你遇到的“unable to inflate navigation bar”崩溃,大概率是因为颜色状态列表(也就是你写的Selector)的放置位置或者配置细节出了问题,咱们一步步来解决:

1. 颜色Selector的目录放错了!

你写的是颜色状态列表(Color State List),这种XML文件必须放在res/color/目录下,而不是drawable目录!虽然有些情况下drawable目录也能勉强识别,但官方规范里颜色状态列表的专属目录是res/color/,这是最常见的导致inflate失败的原因。

你需要:

  • 在res目录下新建一个color文件夹(如果没有的话)
  • 把你的nav_bar_item_state.xml移动到这个color目录里

2. 检查布局文件的命名空间

确保你的布局文件根元素里声明了app命名空间,否则app:itemIconTint和app:itemTextColor这些属性会无法被识别,进而导致inflate失败。根元素应该类似这样:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <!-- 你的BottomNavigationView代码放在这里 -->
</RelativeLayout>

3. 清理Selector的格式问题

你提供的Selector代码里有多余的空格(比如XML声明和<selector>标签挤在一起),虽然不一定会直接报错,但可能会影响XML解析。建议改成标准格式:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_checked="true" android:color="@android:color/holo_blue_dark" />
    <item android:color="@android:color/darker_gray" />
</selector>

4. 考虑迁移到AndroidX(可选但推荐)

你现在用的是旧的Support库版本的BottomNavigationView,如果以上步骤都试过还不行,可以考虑迁移到AndroidX的Material组件——这是官方现在主推的方案,能避免很多旧库的兼容性问题:

  • 把布局里的android.support.design.widget.BottomNavigationView替换成com.google.android.material.bottomnavigation.BottomNavigationView
  • 在项目的build.gradle(Module级别)里引入Material库:
implementation 'com.google.android.material:material:1.9.0' // 可以用最新版本号

按照这些步骤调整后,应该就能解决inflate崩溃的问题,让BottomNavigationView正常显示选中/未选中的颜色状态啦!

内容的提问来源于stack exchange,提问作者kinza

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 06:28:56