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

为什么NavigationView的可选中菜单项运行时不显示复选框

问题原因

出现该问题的核心是运行时应用主题与Material NavigationView 组件的默认样式不匹配,具体有两个常见诱因:

  1. 应用全局主题未继承Theme.MaterialComponents系列主题,仍使用老式Theme.AppCompat系列主题,导致NavigationView可勾选菜单项的默认复选框样式无法正常加载。Android Studio预览时使用IDE默认主题,因此显示正常,运行时调用应用自定义主题就会出现异常。
  2. 部分高版本Material Components库中,可勾选菜单项如果没有显式指定勾选状态图标,默认不会渲染复选框占位。

解决方案

方案1:修正主题配置(优先推荐)

将应用全局主题的父类修改为Theme.MaterialComponents系列的对应主题即可,示例如下:

<!-- res/values/styles.xml -->
<style name="AppTheme" parent="Theme.MaterialComponents.DayNight.NoActionBar">
    <!-- 保留原有其他主题配置 -->
</style>

如果不需要修改全局主题,也可以单独给NavigationView指定Material风格主题:

<com.google.android.material.navigation.NavigationView
    android:id="@+id/navigationView"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_gravity="end"
    android:theme="@style/Theme.MaterialComponents.DayNight.NoActionBar"
    app:menu="@menu/activity_foo_view"/>

方案2:手动指定勾选图标

如果修改主题不符合项目需求,可以手动给可勾选菜单项指定复选框状态选择器:

  1. 首先新建勾选状态选择器res/drawable/nav_checkbox_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:drawable="@drawable/ic_check_box_checked" />
    <item android:state_checked="false" android:drawable="@drawable/ic_check_box_unchecked" />
</selector>
  1. 然后在NavigationView中配置即可(如果使用的Material组件版本低于1.4.0,没有app:itemCheckableIcon属性,直接给每个menu item添加android:icon="@drawable/nav_checkbox_selector"属性即可):
<com.google.android.material.navigation.NavigationView
    android:id="@+id/navigationView"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_gravity="end"
    app:menu="@menu/activity_foo_view"
    app:itemIconTint="@color/your_icon_tint"
    app:itemCheckableIcon="@drawable/nav_checkbox_selector"/>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 15:54:03