InflateException: двоичная строка XML файла # 8: ошибка раздувания класса ImageView

Я знаю, что есть другие вопросы по SO, которые спрашивают одно и то же. Я уже смотрел на большинство из них.

В большинстве ответов о ошибках памяти. Я не вижу, как ImageView, который загружает только маленькую иконку (24x24 пикселя), может сделать что-то вроде этого.

Но я бы хотел опубликовать stacktrace, может быть, кто-то еще может идентифицировать то, что я не могу и помогу мне.

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)

Файл макета

<?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: код моего класса адаптера.

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

Трассировка стека не отображает его, но ошибка во время инфляции может быть получена с помощью drawable, используемой в ImageView, в данном случае:

android:src="@drawable/ic_dot"

OP проверил эту догадку, попробовав другой способ, который "кажется правильным сейчас...".

Ответ 2

двоичная строка XML файла # 0: ошибка раздувания класса imageview

вам нужно узнать, стало ли ваше изображение привлекательным - v23 или v24, которое может быть выше вашего мобильного уровня os. Обязательно избегайте создания изображения с возможностью рисования в проекте

example В папке с возможностью выбора ~ > "ic_contact (v24)"

Ответ 3

Если вы используете векторные чертежи, используйте

app:srcCompat="@drawable/ic_dot"

вместо

android:src="@drawable/ic_dot"

Ответ 4

У меня такая же проблема. Изображение png для моего imageView вызывало класс inflateException. Это происходило только с моим телефоном под управлением Android 6.0.1, но не в моем телефоне под управлением Android 7.0. Чтобы решить это:

---In Android Studio---

  • Удалил изображение png из папки drawable (у меня видна только папка drawable, а не drawable-v24).
  • Скопируйте png обратно в папку для рисования. При этом вы сможете скопировать его в папку drawable или drawable-v24. Скопируйте png в обе папки
  • Скопируйте png в обе папки (png должно иметь одинаковое имя).
  • Как только вы скопируете png в обе папки, появится новая папка с именем png. Внутри вы увидите 2 PNG. Один с "(v24)" рядом с ним. Появится новая папка с именем png, содержащая png

Ответ 5

использовать

app:srcCompat="@drawable/ic_dot" 

не

android:src="@drawable/ic_dot" 

Ответ 6

В моем случае у меня было app:srcCompat="@drawable/ic_svg_image" внутри ImageView, но это был очень сложный SVG. Хотя это показывалось на вкладке " Design ", приложение падало.

Я изменил его на PNG.

Ответ 7

Не вставляйте свое изображение в drawable в Android Studio, вставьте его в папку drawable, очистите проект и затем запустите его, чтобы все заработало.

Ответ 8

Я также сталкиваюсь с такой проблемой. самый простой способ решить

Просто поместите ваши файлы для рисования в каталог для рисования, а не для рисования 24.

Ответ 9

Следующий код может быть добавлен в Android Manifests-Activity

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

пожалуйста, удалите эту тему, если вы добавили.

Моя проблема была решена после удаления этой темы. Я получил это решение после долгого времени.

Ответ 10

использование android.support.v7.widget.AppCompatImageView без android:background решил проблему для меня.

Ответ 11

android:src="@raw/ic_image"

Я добавил файл изображения в новый каталог raw, и это решило мою проблему.