Caused by: android.view.InflateException: Binary XML file line #10: Error inflating class ImageView

本文介绍了解决在Android项目中ImageView背景资源加载失败的方法。通过调整资源文件位置或将资源加载方式改为Java代码实现,有效避免了错误的发生。适用于遇到类似问题的开发者。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在写ImageView的时候,出现了题目这样的问题,因为我是导入别人的项目,但是我看他写的属性都很平常,没什么问题的,代码如下:

<ImageView
    android:id="@+id/imageView1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/tushu1"/>

我一开始就猜测是 android:background="@drawable/tushu1"这一句的问题,但是怎么想语法都可以的。于是我把这个属性去掉,然后在MainActivity.class中通过Java代码setImageResource(R.drawable.tushu1)来设置它的背景属性,运行时不会出现这个错误了。大家可以试试这个方法。
除此之外还有个更简单的方法,那就是在Android Studio中将Android切换到Project
在这里插入图片描述
在项目中找到src文件在这里插入图片描述
在这里插入图片描述
可以看到有drawable和drawable-v24两个文件夹,我们只要把tushu1.png挪到drawable文件夹中就可以了。

package com.example.newviewapplication; import android.content.Context; import android.content.res.TypedArray; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.util.AttributeSet; import android.view.View; import android.view.ViewGroup; import androidx.annotation.NonNull; import androidx.annotation.Nullable; public class CustomView extends View { private Paint mPainter; public CustomView(Context context) { super(context); init(); } public CustomView(Context context, @Nullable AttributeSet attrs) { this(context, attrs,0); init(); } public CustomView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); TypedArray t = context.obtainStyledAttributes(attrs,R.styleable.CustomView); int mColor = t.getColor(R.styleable.CustomView_circle_color,Color.BLUE); t.recycle(); mPainter.setColor(mColor); init(); } public CustomView(Context context, @Nullable AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); } private void init(){ mPainter = new Paint(); mPainter.setColor(Color.RED); mPainter.setStrokeWidth(5f); mPainter.setStyle(Paint.Style.FILL); } @Override protected void onDraw(@NonNull Canvas canvas) { super.onDraw(canvas); //padding生效 // 获取传入的padding值 final int paddingLeft = getPaddingLeft(); final int paddingRight = getPaddingRight(); final int paddingTop = getPaddingTop(); final int paddingBottom = getPaddingBottom(); // 获取绘制内容的高度和宽度(考虑了四个方向的padding值) int width = getWidth() - paddingLeft - paddingRight ; int height = getHeight() - paddingTop - paddingBottom ; // 设置圆的半径 = 宽,高最小值的2分之1 int r = Math.min(width, height)/2; // 画出圆(蓝色) // 圆心 = 控件的中央,半径 = 宽,高最小值的2分之1 canvas.drawCircle(paddingLeft+width/2,paddingTop+height/2,r,mPainter); } //wrap_content生效 @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.onMeasure(widthMeasureSpec, heightMeasureSpec); // 获取宽-测量规则的模式和大小 int widthMode = MeasureSpec.getMode(widthMeasureSpec); int widthSize = MeasureSpec.getSize(widthMeasureSpec); // 获取高-测量规则的模式和大小 int heightMode = MeasureSpec.getMode(heightMeasureSpec); int heightSize = MeasureSpec.getSize(heightMeasureSpec); // 设置wrap_content的默认宽 / 高值 // 默认宽/高的设定并无固定依据,根据需要灵活设置 // 类似TextView,ImageView等针对wrap_content均在onMeasure()对设置默认宽 / 高值有特殊处理,具体读者可以自行查看 int mWidth = 400; int mHeight = 400; // 当布局参数设置为wrap_content时,设置默认值 if (getLayoutParams().width == ViewGroup.LayoutParams.WRAP_CONTENT && getLayoutParams().height == ViewGroup.LayoutParams.WRAP_CONTENT) { setMeasuredDimension(mWidth, mHeight); // 宽 / 高任意一个布局参数为= wrap_content时,都设置默认值 } else if (getLayoutParams().width == ViewGroup.LayoutParams.WRAP_CONTENT) { setMeasuredDimension(mWidth, heightSize); } else if (getLayoutParams().height == ViewGroup.LayoutParams.WRAP_CONTENT) { setMeasuredDimension(widthSize, mHeight); } } } 代码报错:FATAL EXCEPTION: main Process: com.example.newviewapplication, PID: 15829 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.newviewapplication/com.example.newviewapplication.MainActivity}: android.view.InflateException: Binary XML file line #15 in com.example.newviewapplication:layout/activity_main: Binary XML file line #15 in com.example.newviewapplication:layout/activity_main: Error inflating class com.example.newviewapplication.CustomView
最新发布
07-29
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值