Запутался в проверке 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
как ребенок.