Mes
Mes

Reputation: 1691

InflateException: Binary XML file line #8: Error inflating class ImageView

I know there are other questions on SO asking the same thing. I have already looked at most of them.

Most answers call about memory errors. I can't see how an ImageView which loads just a small icon (24x24 pixels) can make something like this.

But I'd like to post the stacktrace here maybe someone else can identify something I can't and help me.

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)

Layout file

<?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>

EDIT 2 : the code of my Adapter class.

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;
    }

}

Upvotes: 42

Views: 96723

Answers (18)

Arpan Sircar
Arpan Sircar

Reputation: 530

For me, all the drawables were pasted within the \res\drawable folder instead of the drawable-v24 folder. In spite of this, I was experiencing crashes.

The way I fixed this, was to use an androidx.appcompat.widget.AppCompatImageView instead of a regular ImageView.

Next, I changed the android:src to app:srcCompat.

The app stopped crashing hereon.

Upvotes: 1

Arhamirfan
Arhamirfan

Reputation: 1

When you see "Error inflating" with imageview, give it a try to change that ImageView's src file from drawable(24) to simple drawable folder and likewise other files too if there's any. It is because of you API version is bigger then the android version to which you are installing you app.

Upvotes: 0

Alex - Exaland Concept
Alex - Exaland Concept

Reputation: 127

Well in my case it was crashing in only release builds because of proguard, so after i have added this line:

-keep class android.support.v7.widget.** { *; }

in file proguard-rules.pro, the crash has been resolved.

Upvotes: 0

Kesselly Kamara
Kesselly Kamara

Reputation: 201

Delete the png image from the drawable (24) v folder and put the image in drawable folder visible, not the drawable-v24).

Upvotes: 0

Akash Chaudhary
Akash Chaudhary

Reputation: 711

This issue is usually caused when you copy drawables files to drawable-24 folder instead of drawable folder. So, copy all images from drawable-24 folder to drawable.

Upvotes: 5

S_i_l_e_n_t C_o_d_e_r
S_i_l_e_n_t C_o_d_e_r

Reputation: 363

I was suffering from the same problem today, found the solution! Now whenever you add image file make sure you convert it into xxhdpi by this your app will run on every device!

Upvotes: 2

Jwala Kumar
Jwala Kumar

Reputation: 535

I also use to face this error most often. The reason behind why this error comes is,

1) In ImageView we have used wrong format of image, or an image when we designed and saved it didn't get save properly. it's extension got broken somehow.
2) One another reason of this error is we have used an xml with drawable. For example, android:src="@drawable/ic_left", here ic_left is an xml file in drawable that we are using.

So, to avoid this kind of error, always use .png format image with ImageView. In my case the error was,

java.lang.RuntimeException: Unable to start activity ComponentInfo{package name of project/ActivtyName}: android.view.InflateException: Binary XML file line #255: Binary XML file line #255: Error inflating class ImageView

Upvotes: 1

Arkady
Arkady

Reputation: 3232

What helped me is just copying the image file (.png in my case)

  • from res\drawable-v24

  • to \res\drawable directory.

Will happy if this post will save time to somebody else.

Upvotes: 15

Wimukthi Rajapaksha
Wimukthi Rajapaksha

Reputation: 1019

android:src="@raw/ic_image"

I added the image file to new directory called raw and it solved my problem.

Upvotes: 1

Ashenafi Tadesse
Ashenafi Tadesse

Reputation: 51

I also face this kind of problem . the simplest way to solve

Just Put your drawable files in drawable directory, not drawable 24.

Upvotes: 5

Omid Ziyaee
Omid Ziyaee

Reputation: 428

using android.support.v7.widget.AppCompatImageView without android:background solved the problem for me.

Upvotes: 3

Soorya
Soorya

Reputation: 189

Don't paste your image into drawable in Android studio, paste it into the drawable folder and clean the project and then run it will work.

Upvotes: 1

CoolMind
CoolMind

Reputation: 28845

In my case I had app:srcCompat="@drawable/ic_svg_image" inside ImageView, but it was very complex SVG. Though it showed in Design tab, an application crashed.

I changed it to PNG.

Upvotes: 1

Andico
Andico

Reputation: 81

I had the same problem. The png image for my imageView was causing a class inflateException. This was only happening with my phone running android 6.0.1, but not in my phone running android 7.0. To solve this:

---In Android Studio---

  • Deleted the png image from the drawable folder (I only have the drawable folder visible, not the drawable-v24).
  • Copy the png back to the drawable folder. When doing this, you'll be able to pick to copy it to either the drawable or drawable-v24 folder. Copy the png to both folders
  • Copy the png to both folders (png's must have same name).
  • Once you copy the png to both folders, a new folder with the png's name will show up. Inside it you will see the 2 png's. One with "(v24)" next to it. New folder with name of png's will appear, containing png's

Upvotes: 8

Nitin Karale
Nitin Karale

Reputation: 799

The following code might be added in Android Manifests-Activity

<activity
android:name=""
--------------
android:theme="@android:style/Theme.Black.NoTitleBar">
</activity>

please remove this theme if you have added.

My problem has been solved after removing this theme. I got these solution after long time.

Upvotes: 1

Aashay karekar
Aashay karekar

Reputation: 960

binary xml file line #0: error inflating class imageview

you have to see if your image has become drawable-v23 or v24 which might be higher than your mobile os level, Make sure to avoid creating drawable version image in project

example In drawable folder ~> "ic_contact(v24)"

Upvotes: 72

pedroca
pedroca

Reputation: 1768

If you are using vector drawables, use

app:srcCompat="@drawable/ic_dot"

instead of

android:src="@drawable/ic_dot"

Upvotes: 31

Marcin Koziński
Marcin Koziński

Reputation: 11074

The stack trace doesn't show it, but the error during inflation might come from drawable used in the ImageView, in this case:

android:src="@drawable/ic_dot"

OP tested this hunch, by trying a different drawable which "seems ok right now...".

Upvotes: 40

Related Questions