Запутался в проверке Lint "UselessParent"

У меня есть файл макета, о котором Lint выдает следующее предупреждение:

UselessParent

Сводка: проверяет, можно ли удалить родительский макет.

Приоритет: 2 / 10 Важность: Предупреждение Категория: Производительность

Макет с дочерними элементами, который не имеет дочерних элементов, не является скроллвью или корневым макетом и не имеет фона, может быть удален, и его дочерние элементы могут быть перемещены непосредственно в родительский элемент для более плоской и более эффективной иерархии макетов.

Часть, о которой я запутался, выделена жирным шрифтом. Мой макет (до исправления этого предупреждения) выглядит следующим образом:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingLeft="@dimen/default_margin"
        android:paddingTop="@dimen/default_margin_small"
        android:paddingBottom="@dimen/default_margin_small">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:paddingRight="@dimen/default_margin"
            android:orientation="vertical">

            <!-- TEXTVIEWS & EDITTEXTS HERE -->

        </LinearLayout>

    </ScrollView>

</LinearLayout>

Но я исправил предупреждение так:

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingLeft="@dimen/default_margin"
    android:paddingTop="@dimen/default_margin_small"
    android:paddingBottom="@dimen/default_margin_small">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:paddingRight="@dimen/default_margin"
        android:orientation="vertical">

        <!-- TEXTVIEWS & EDITTEXTS HERE -->

    </LinearLayout>

</ScrollView>

Это имеет смысл для меня, но смелая часть выше в проверке Lint немного смущает меня, потому что у меня есть ScrollView внутри LinearLayout. Не следует ли мне исправить это, как это, или нет проблем с наличием ScrollView в качестве корневого элемента для файла макета, так как ScrollView наследуется от FrameLayout в любом случае?

1 ответ

Решение

Там нет проблем с ScrollView в качестве корневого элемента для файла макета. Предположительно жалоба на ворс была связана с вашим первоначальным корнем LinearLayout, который не добавляет никакой ценности только ScrollView как ребенок.

Другие вопросы по тегам