问题
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;
}
}
回答1:
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...".
回答2:
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)"
回答3:
If you are using vector drawables, use
app:srcCompat="@drawable/ic_dot"
instead of
android:src="@drawable/ic_dot"
回答4:
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
回答5:
I also face this kind of problem . the simplest way to solve
Just Put your drawable files in drawable directory, not drawable 24.
回答6:
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.
回答7:
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.
回答8:
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.
回答9:
using android.support.v7.widget.AppCompatImageView
without android:background
solved the problem for me.
回答10:
android:src="@raw/ic_image"
I added the image file to new directory called raw and it solved my problem.
回答11:
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.
来源:https://stackoverflow.com/questions/37621934/inflateexception-binary-xml-file-line-8-error-inflating-class-imageview