Подтвердить что ты не робот

LinearLayout vs RelativeLayout

В чем преимущества RelativeLayout над LinearLayout в android? Для конкретного дизайна, который вы бы предпочли, и в чем причина этого?

Является ли это (RelativeLayout) сопоставимым или похожим, как HTML <div>??

4b9b3361

Ответ 1

Прочитайте в этой статье:

Инструментарий Android UI предлагает несколько менеджеров макетов, которые довольно просты в использовании и, в большинстве случаев, вам нужны только основные функции этих менеджеров макетов для реализации пользовательского интерфейса. К сожалению, к основным функциям, к сожалению, не самый эффективный способ создания пользовательских интерфейсов. Общим примером является злоупотребление LinearLayout, что приводит к распространению представлений в иерархии представлений. Каждое представление, или, что хуже, каждый менеджер макетов, добавляемый в ваше приложение, стоит дорого: инициализация, макет и чертеж становятся медленнее. Пропуск макета может быть особенно дорогим, когда вы вставляете несколько LinearLayout, которые используют параметр weight, который требует, чтобы ребенок дважды измерялся...

В RelativeLayout представления выравниваются либо со своим родителем, либо с самим RelativeLayout, либо с другими видами. Например, мы объявили, что описание выровнено со дном RelativeLayout и что заголовок расположен над описанием и привязан к родительскому верху. С описанием GONE RelativeLayout не знает, где разместить нижний край заголовка. Чтобы решить эту проблему, вы можете использовать очень специальный параметр макета под названием alignWithParentIfMissing.

Этот логический параметр просто сообщает RelativeLayout использовать свои собственные ребра в качестве якорей, когда отсутствует цель ограничения. Например, если вы разместите представление справа от представления GONE и установите для параметра alignWithParentIfMissing значение true, RelativeLayout вместо этого привяжет представление к его левому краю. В нашем случае использование alignWithParentIfMissing приведет к тому, что RelativeLayout выровнят нижнюю часть заголовка со своим собственным дном.

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

Ответ 2

По имени, которое вы можете узнать LinearLayout, добавляет линейный вид вертикально или горизонтально по заданной вами ориентации. Он будет добавлять взгляды один за другим, что будет зависеть от требований дизайна. И RelativeLayout добавляет вид, связанный друг с другом, нет необходимости объявлять ориентацию в RelativeLayout.

Как, например, вы хотите добавить два TextView один под другим, поэтому сначала добавьте TextView и отправьте второй TextView с помощью первого TextView, добавив android:layout_below="first textview id" в файл XML. Таким образом, вы можете иметь дело с RelativeLayout.