InflateException:二进制XML文件行#8:使类ImageView出错

Mes*_*Mes 20 android android-layout inflate-exception

我知道还有其他问题要求同样的事情.我已经看过他们中的大多数了.

大多数答案都会调用内存错误.我看不出一个ImageView只加载一个小图标(24x24像素)的东西是如何形成这样的东西的.

但是我想在这里发布堆栈跟踪,也许其他人可以找到我无法识别的东西并帮助我.

06-03 22:14:17.367 28590-28590/css.mvp.example.debug W/dalvikvm: threadid=1: thread exiting with uncaught exception (group=0x41e4ad40)
06-03 22:14:17.409 28590-28590/css.mvp.example.debug E/AndroidRuntime: FATAL EXCEPTION: main
Process: css.mvp.example.debug, PID: 28590  android.view.InflateException: Binary XML file line #8: Error inflating class ImageView
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:713)
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
    at css.mvp.example.main.projects.fragments.adapters.PollAnswersAdapter.getView(PollAnswersAdapter.java:38)
    at android.widget.AbsListView.obtainView(AbsListView.java:2255)
    at android.widget.ListView.measureHeightOfChildren(ListView.java:1263)
    at android.widget.ListView.onMeasure(ListView.java:1175)
    at android.view.View.measure(View.java:16540)
    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5137)
    at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1404)
    at android.widget.LinearLayout.measureVertical(LinearLayout.java:695)
    at android.widget.LinearLayout.onMeasure(LinearLayout.java:588)
    at android.view.View.measure(View.java:16540)
    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5137)
    at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
    at android.view.View.measure(View.java:16540)
    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5137)
    at android.support.design.widget.CoordinatorLayout.onMeasureChild(CoordinatorLayout.java:668)
    at android.support.design.widget.CoordinatorLayout.onMeasure(CoordinatorLayout.java:735)
    at android.view.View.measure(View.java:16540)
    at android.support.v4.widget.DrawerLayout.onMeasure(DrawerLayout.java:1075)
    at android.view.View.measure(View.java:16540)
    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5137)
    at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
    at android.view.View.measure(View.java:16540)
    at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:719)
    at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:455)
    at android.view.View.measure(View.java:16540)
    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5137)
    at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
    at android.view.View.measure(View.java:16540)
    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5137)
    at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
    at android.support.v7.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:135)
    at android.view.View.measure(View.java:16540)
    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5137)
    at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1404)
    at android.widget.LinearLayout.measureVertical(LinearLayout.java:695)
    at android.widget.LinearLayout.onMeasure(LinearLayout.java:588)
    at android.view.View.measure(View.java:16540)
    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5137)
    at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
    at android.view.View.measure(View.java:16540)
    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5137)
    at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1404)
    at android.widget.LinearLayout.measureVertical(LinearLayout.java:695)
    at android.widget.LinearLayout.onMeasure(LinearLayout.java:588)
    at android.view.View.measure(View.java:16540)
    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5137)
    at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
    at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2291)
    at android.view.View.measure(View.java:16540)
    at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:1942)
    at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1132)
    at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1321)
    at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1019)
    at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5725)
Run Code Online (Sandbox Code Playgroud)

布局文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout   xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal"
android:weightSum="11"
android:paddingTop="16dp" android:paddingBottom="16dp"
android:gravity="center_horizontal"
android:layout_width="match_parent" android:layout_height="wrap_content">

<ImageView
    android:id="@+id/iv_answer_circle"
    android:src="@drawable/ic_dot"
    android:layout_gravity="center" android:layout_weight="2"
    android:layout_marginLeft="16dp" android:layout_marginRight="16dp"
    android:layout_width="0dp" android:layout_height="wrap_content" />

<TextView android:id="@+id/tv_poll_answer"
    android:layout_weight="6"
    android:layout_width="0dp" android:layout_height="wrap_content" />

<TextView android:id="@+id/tv_poll_answer_num"
    android:layout_weight="1"
    android:layout_marginLeft="16dp" android:layout_marginRight="8dp"
    android:layout_width="0dp" android:layout_height="wrap_content" />

<TextView android:id="@+id/tv_poll_answer_percent"
    android:layout_weight="2"
    android:layout_marginRight="16dp"
    android:layout_width="0dp" android:layout_height="wrap_content" />

</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

编辑2:我的Adapter类的代码.

public class PollAnswersAdapter extends ArrayAdapter<PollAnswerItem> {

    private Context context;
    private ArrayList<PollAnswerItem> data;


    public PollAnswersAdapter(Context context, ArrayList<PollAnswerItem> data) {
        super(context, -1, data);
        this.context = context;
        this.data = data;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

        View rowView = inflater.inflate(R.layout.row_answer, parent, false);

        ImageView ivCircle = (ImageView) rowView.findViewById(R.id.iv_answer_circle);
        TextView tvAnswer = (TextView) rowView.findViewById(R.id.tv_poll_answer);
        TextView tvNums = (TextView) rowView.findViewById(R.id.tv_poll_answer_num);
        TextView tvPercent = (TextView) rowView.findViewById(R.id.tv_poll_answer_percent);

        tvAnswer.setText(data.get(position).getAnswer());
        tvNums.setText(data.get(position).getNum());
        tvPercent.setText(data.get(position).getPercent() + "%");
        tvPercent.setTextColor(ColorTemplate.PREDEFINED_COLORS[position]);

        return rowView;
    }

}
Run Code Online (Sandbox Code Playgroud)

小智 46

二进制xml文件行#0:错误膨胀类imageview

您必须查看您的图像是否已成为可绘制的-v23或v24,这可能高于您的移动操作系统级别,请确保避免在项目中创建可绘制的版本图像

示例在可绘制文件夹中〜>"ic_contact(v24)"

  • 谢谢,我对 Android 开发(2020)相当陌生,甚至不知道 v24,我将具有“v24”的资源复制粘贴到 /drawable 文件夹中,这解决了问题! (2认同)

Mar*_*ski 22

堆栈跟踪没有显示它,但是在充气过程中的错误可能来自于ImageView在这种情况下使用的drawable :

android:src="@drawable/ic_dot"
Run Code Online (Sandbox Code Playgroud)

OP测试了这种预感,尝试了一种" 现在看起来不错...... " 的不同画面.


ped*_*oca 14

如果您正在使用矢量绘图,请使用

app:srcCompat="@drawable/ic_dot"
Run Code Online (Sandbox Code Playgroud)

代替

android:src="@drawable/ic_dot"
Run Code Online (Sandbox Code Playgroud)


Ark*_*ady 11

帮助我的只是复制图像文件(在我的情况下为 .png)

  • 来自 res\drawable-v24

  • 到 \res\drawable 目录。

如果这篇文章能为其他人节省时间,我会很高兴。


小智 5

我有同样的问题。我的imageView的png图像引起了inflateException类。这仅在运行android 6.0.1的手机上发生,而在运行android 7.0的手机上没有发生。要解决这个问题:

-在Android Studio中-

  • 从drawable文件夹中删除了png图像(我只有可见的drawable文件夹,而没有drawable-v24)。
  • 将png复制回drawable文件夹。这样做时,您可以选择将其复制到drawable或drawable-v24文件夹。 将png复制到两个文件夹
  • 将png复制到两个文件夹(png的名称必须相同)。
  • 将png复制到两个文件夹后,将显示一个带有png名称的新文件夹。在其中,您将看到2个png。旁边带有“(v24)”的一个。 将会出现名称为png的新文件夹,其中包含png的


小智 5

我也面临这样的问题。最简单的解决方法

只需将您的 drawable 文件放在 drawable 目录中,而不是 drawable 24。


Aka*_*ary 5

当您将 drawables 文件复制到 drawable-24 文件夹而不是 drawable 文件夹时,通常会导致此问题。因此,将所有图像从 drawable-24 文件夹复制到 drawable。