В чем разница между LinearLayout, RelativeLayout и AbsoluteLayout?


Ответы:


216

LinearLayout означает, что виды можно выравнивать по одному (по вертикали / горизонтали).

RelativeLayout означает, что основывается на соотношении взглядов родителей и других взглядов.

ConstraintLayout похож на RelativeLayout в том, что он использует отношения для размещения и размера виджетов, но обладает дополнительной гибкостью и его проще использовать в редакторе макета.

WebView для загрузки html, статических или динамических страниц.

FrameLayout чтобы загрузить дочерние элементы друг над другом, как карточки внутри фрейма, мы можем разместить одну над другой или в любом месте внутри фрейма.

устаревший - AbsoluteLayout означает, что вы должны указать точное положение, в котором должно быть представление.

Для получения дополнительной информации проверьте этот адрес https://developer.android.com/guide/topics/ui/declaring-layout#CommonLayouts.


2
Проверьте эту ссылку также чувак .. mobiforge.com/designing/story/…
C

2
AbsoluteLayout устарел!
Фрай

3
@ Фрай, я ответил на это раньше, чем через 2 года. Пожалуйста, прочтите вопрос.
Ganapathy C

Очевидно, AbsoluteLayoutне рекомендуется по какой-то причине; если контент не подходит, он случайным образом разбрасывает вещи. Вам лучше использовать a LinearLayoutи установить для всех его отступов значение 0.
EpicPandaForce

50

Определения:

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

Дополнительная информация:

FrameLayout

FrameLayout предназначен для блокировки области на экране для отображения одного элемента. Как правило, FrameLayout следует использовать для хранения одного дочернего представления, потому что может быть сложно организовать дочерние представления таким образом, чтобы можно было масштабировать их до разных размеров экрана, без наложения дочерних элементов друг на друга. Однако вы можете добавить несколько дочерних элементов в FrameLayout и управлять их положением в FrameLayout, назначив каждому дочернему элементу гравитацию с помощью android:layout_gravityатрибута.

Дочерние представления рисуются в стеке, причем последний добавленный дочерний элемент находится наверху. Размер FrameLayout - это размер его самого большого дочернего элемента (плюс заполнение), видимого или невидимого (если родительский элемент FrameLayout позволяет).

RelativeLayout

RelativeLayout - очень мощная утилита для разработки пользовательского интерфейса, поскольку она может исключить вложенные группы представлений и сохранить плоскую иерархию макета, что повышает производительность. Если вы обнаружите, что используете несколько вложенных групп LinearLayout, вы можете заменить их одним RelativeLayout.

(Текущие документы здесь )

TableLayout

TableLayout состоит из ряда TableRowобъектов, каждый из которых определяет строку (на самом деле у вас могут быть другие дочерние объекты, что будет объяснено ниже). Контейнеры TableLayout не отображают линии границ для своих строк, столбцов или ячеек. Каждая строка имеет ноль или более ячеек; каждая ячейка может содержать один объект просмотра. В таблице столько столбцов, сколько в строке с наибольшим количеством ячеек. Таблица может оставлять ячейки пустыми. Ячейки могут охватывать столбцы, как и в HTML.

Ширина столбца определяется строкой с самой широкой ячейкой в ​​этом столбце.


Примечание . Абсолютный макет устарел.


4

LinearLayout: макет, который организует дочерние элементы в одну горизонтальную или вертикальную строку. Он создает полосу прокрутки, если длина окна превышает длину экрана. Это означает, что вы можете выровнять виды один за другим (по вертикали / горизонтали).

RelativeLayout: позволяет указать расположение дочерних объектов относительно друг друга (дочерний элемент A слева от дочернего элемента B) или родительского объекта (выровнен по верхнему краю родительского объекта). Он основан на соотношении взглядов родителей и других взглядов.

WebView: для загрузки html, статических или динамических страниц.

Для получения дополнительной информации перейдите по этой ссылке: http://developer.android.com/guide/topics/ui/layout-objects.html.


4

LinearLayout - в LinearLayout представления организованы в вертикальной или горизонтальной ориентации.

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

FrameLayout - он ведет себя как единый объект, а его дочерние представления перекрываются друг с другом. FrameLayout принимает размер самого большого дочернего элемента.

Макет координатора - это самая мощная ViewGroup, представленная в библиотеке поддержки Android. Он ведет себя как FrameLayout и имеет множество функций для координации между его дочерними представлениями, например, плавающую кнопку и панель закусок, панель инструментов с прокручиваемым представлением.


2

Отличное объяснение здесь:
https://www.cuelogic.com/blog/using-framelayout-for-designing-xml-layouts-in-android

LinearLayout размещает элементы бок о бок по горизонтали или вертикали.

RelativeLayout помогает упорядочить элементы пользовательского интерфейса на основе определенных правил. Вы можете указать такие правила, как: выровняйте это по левому краю родителя, поместите это слева / справа от этого элемента и т. Д.

AbsoluteLayout предназначен для абсолютного позиционирования, т. Е. Вы можете указать точные координаты, в которых должно идти представление.

FrameLayout позволяет размещать виды по оси Z. Это означает, что вы можете размещать элементы представления один над другим.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.