android - InflateException: línea de archivo XML binario#8: Error al inflar la clase ImageView
android-layout inflate-exception (10)
El seguimiento de la pila no lo muestra, pero el error durante el inflado podría provenir del sorteo utilizado en
ImageView
, en este caso:
android:src="@drawable/ic_dot"
OP probó esta corazonada, probando un dibujo diferente que " parece estar bien ahora ... ".
Sé que hay otras preguntas sobre SO que preguntan lo mismo. Ya he mirado la mayoría de ellos.
La mayoría de las respuestas llaman sobre errores de memoria.
No puedo ver cómo un
ImageView
que carga solo un pequeño icono (24x24 píxeles) puede hacer algo como esto.
Pero me gustaría publicar el stacktrace aquí, tal vez alguien más pueda identificar algo que yo no pueda y ayudarme.
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)
Archivo de diseño
<?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: el código de mi clase de adaptador.
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;
}
}
El siguiente código podría agregarse en Manifiestos-Actividad de Android
<activity
android:name=""
--------------
android:theme="@android:style/Theme.Black.NoTitleBar">
</activity>
elimine este tema si lo ha agregado.
Mi problema se ha resuelto después de eliminar este tema. Obtuve estas soluciones después de mucho tiempo.
En mi caso, tenía la
app:srcCompat="@drawable/ic_svg_image"
dentro de
ImageView
, pero era un SVG muy complejo.
Aunque se mostró en la pestaña
Design
, una aplicación se bloqueó.
Lo cambié a PNG.
No pegue su imagen en dibujable en Android Studio, péguela en la carpeta dibujable y limpie el proyecto y luego ejecútelo.
Si está utilizando dibujos vectoriales, use
app:srcCompat="@drawable/ic_dot"
en vez de
android:src="@drawable/ic_dot"
También me enfrento a este tipo de problema. la forma más sencilla de resolver
Simplemente ponga sus archivos dibujables en el directorio dibujable, no dibujable 24.
Yo tuve el mismo problema. La imagen png para mi imageView estaba causando una clase inflateException. Esto solo sucedía con mi teléfono con Android 6.0.1, pero no con mi teléfono con Android 7.0. Para resolver esto:
--- En Android Studio ---
- Eliminé la imagen png de la carpeta dibujable (solo tengo la carpeta dibujable visible, no el drawable-v24).
- Copie el png nuevamente a la carpeta dibujable. Al hacer esto, podrá elegir copiarlo en la carpeta dibujable o dibujable-v24. Copie el png en ambas carpetas
- Copie el png en ambas carpetas (los png deben tener el mismo nombre).
- Una vez que copie el png en ambas carpetas, aparecerá una nueva carpeta con el nombre del png. En su interior verás los 2 png. Uno con "(v24)" al lado. Aparecerá una nueva carpeta con el nombre de png, que contiene png
usando
android.support.v7.widget.AppCompatImageView
sin
android:background
resolvió el problema.
línea binaria del archivo xml # 0: error al inflar la vista de imagen de clase
debe ver si su imagen se ha convertido en drawable-v23 o v24, que podría ser superior a su nivel de sistema operativo móvil, asegúrese de evitar crear una imagen de versión dibujable en el proyecto
ejemplo en la carpeta dibujable ~> "ic_contact (v24)"
android:src="@raw/ic_image"
Agregué el archivo de imagen al nuevo directorio llamado raw y resolvió mi problema.