Android导航抽屉图标不显示问题求助
Android导航抽屉图标不显示问题求助
我最近在做Android项目的导航抽屉时遇到了个头疼的问题:只有CNN的图标能正常显示,其他所有导航项的图标都看不到——比如BBC、Aaj Tak、Fox News这些项的图标位置都是空白的,Upcoming分类下的New York Times图标也一样。我已经试过修改图标文件格式、重建项目,但都没解决问题。
先贴一下我的activity_main_drawer.xml代码:
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"> <group android:checkableBehavior="single"> <item android:id="@+id/nav_home" android:icon="@drawable/bbc" android:title="@string/bbc" /> <item android:id="@+id/nav_gallery" android:icon="@drawable/aaj_tak" android:title="@string/aaj_tak" /> <item android:id="@+id/nav_slideshow" android:icon="@drawable/cnn" android:title="@string/cnn" /> <item android:id="@+id/foxNewsFragment" android:icon="@drawable/fox" android:title="@string/fox" /> <item android:id="@+id/skyNewsFragment" android:icon="@drawable/sky" android:title="@string/sky" /> </group> <item android:title="Upcoming"> <menu> <item android:id="@+id/new_york_times" android:icon="@drawable/ny" android:title="@string/new_york_times" /> </menu> </item> </menu>
目前导航抽屉里所有项的文字标题都能正常显示,但只有CNN那一项能看到对应的图标,其他全是空白。想请教大家,我该怎么做才能让所有导航项的图标都正常显示出来?
针对这个问题的排查和解决建议:
- 先排查图标资源本身的问题
- 确认所有图标文件都正确放在
res/drawable/目录下,文件名完全匹配引用的名称(划重点:Android资源文件名是大小写敏感的!比如Bbc.png和bbc.png会被识别成两个不同的资源) - 用图片查看器打开这些图标文件,确认文件没有损坏;也可以临时把图标引用换成系统自带的图标(比如
@android:ic_menu_home),如果系统图标能显示,说明是你自己的图标文件有问题
- 确认所有图标文件都正确放在
- 清理项目缓存(比单纯Rebuild更彻底)
- 打开Android Studio,点击顶部菜单栏的
Build->Clean Project,清理完成后再点击Rebuild Project - 如果还是不行,试试
File->Invalidate Caches...,勾选Invalidate and Restart,重启AS后再看效果,很多资源引用的奇怪问题都能通过这个解决
- 打开Android Studio,点击顶部菜单栏的
- 检查NavigationView的配置
- 打开包含NavigationView的布局文件(一般是
activity_main.xml),检查是否设置了app:itemIconTint属性。如果这个属性设置成了透明色,或者和导航抽屉的背景色一致,图标就会“隐身”;你可以尝试添加app:itemIconTint="@null"来取消统一的图标染色,或者设置成一个明显的颜色(比如@color/black)测试 - 确认NavigationView正确引用了你的menu文件:
app:menu="@menu/activity_main_drawer",引用路径不能错
- 打开包含NavigationView的布局文件(一般是
- 检查资源引用的拼写
- 逐行核对
@drawable/bbc这些引用,确保和实际的图标文件名完全一致,比如如果实际文件是bbc_logo.png,但你写的是@drawable/bbc,就会找不到资源
- 逐行核对
备注:内容来源于stack exchange,提问作者Shalini Roy
相关产品推荐
相关产品推荐

