LinearLayout vs RelativeLayout [закрыто]


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

это (RelativeLayout) сопоставимо или похоже на HTML <div> ??

2 71

2 ответа:

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

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

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

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

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

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

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