设置Drawable为ImageView的src时出现InflateException异常求助
这种只在设置src属性时触发的XML Inflate问题我碰到过好几次,给你几个针对性的排查和解决方向:
Vector Drawable兼容性问题
如果你的Drawable是矢量图(.xml格式),在Android 5.0(API 21)以下设备直接用android:src会触发报错。解决办法:- 在app模块的
build.gradle里添加配置:android { defaultConfig { vectorDrawables.useSupportLibrary = true } } - XML里改用
app:srcCompat替代android:src,或者把普通ImageView换成AppCompatImageView。
- 在app模块的
Drawable资源本身的问题
- 检查资源文件名:必须是小写字母、数字、下划线或点,不能有大写或特殊字符,否则系统无法正确识别。
- 检查资源目录:如果是放在
drawable-vXX目录下的资源,要确保运行设备的系统版本不低于该版本,否则会找不到资源导致Inflate失败。 - 检查Drawable格式:比如.9.png有没有制作错误,或者图片分辨率过高导致内存溢出。
ImageView属性冲突
检查XML第76行的ImageView有没有设置不合适的scaleType或尺寸属性,比如给小尺寸ImageView设置了超大分辨率的Drawable,或者scaleType和Drawable类型不兼容(比如给.9.png用centerCrop)。代码加载方式问题
如果是在代码中设置src,别用过时的getResources().getDrawable(),改用ContextCompat.getDrawable(context, R.drawable.your_drawable),它会自动处理不同系统版本的兼容性。
附上你的报错信息以便参考:
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.backgrounds.test/com.backgrounds.test.activities.PointsActivity}: android.view.InflateException: Binary XML file line #76: Binary XML file line #76: Error inflating class ImageView
Caused by: android.view.InflateException: Binary XML file line #76: Binary XML file line #76: Error inflating class ImageView
Caused by: android.view.I...
内容的提问来源于stack exchange,提问作者TopAd Studio

