Меня смущает разница между LinearLayout, RelativeLayout и AbsoluteLayout. Может ли кто-нибудь сказать мне точные различия между ними?
В чем разница между LinearLayout, RelativeLayout и AbsoluteLayout?
Ответы (5)
LinearLayout
означает, что вы можете выравнивать виды один за другим (вертикально/горизонтально).
RelativeLayout
означает, что он основан на отношении представлений его родителей и других представлений.
ConstraintLayout
похож на RelativeLayout в том, что он использует связи с положением и размером виджетов, но обладает дополнительной гибкостью и его проще использовать в редакторе макетов.
WebView
для загрузки html, статических или динамических страниц.
FrameLayout
чтобы загружать дочерние элементы друг над другом, как карты внутри рамки, мы можем разместить одну над другой или в любом месте внутри рамки.
устарел - AbsoluteLayout
означает, что вы должны указать точную позицию, где должно быть представление.
Для получения дополнительной информации посетите этот адрес https://developer.android.com/guide/topics/ui/declaring-layout#CommonLayouts
AbsoluteLayout
устарел по какой-то причине; если контент не подходит, он случайным образом разбрасывает вещи. Вам лучше использовать LinearLayout
и установить все его отступы на 0
.
- person EpicPandaForce; 15.11.2015
Определения:
- Макет кадра: он предназначен для выделения области на экране для отображения одного элемента.
- Линейный макет: макет, который упорядочивает свои дочерние элементы в один столбец или одну строку.
- Относительный макет: этот макет представляет собой группу представлений, которая отображает дочерние представления в относительных положениях.
- Макет таблицы: Макет, который упорядочивает своих дочерних элементов в строки и столбцы.
Дополнительная информация:
FrameLayout предназначен для выделения области на экране для отображения одного элемента. Как правило, FrameLayout следует использовать для хранения одного дочернего представления, потому что может быть сложно организовать дочерние представления таким образом, чтобы их можно было масштабировать до разных размеров экрана, чтобы дочерние элементы не перекрывали друг друга. Однако вы можете добавить несколько дочерних элементов в FrameLayout и управлять их положением в FrameLayout, назначая гравитацию каждому дочернему элементу с помощью атрибута
android:layout_gravity
.Дочерние представления рисуются в стеке, причем самый последний добавленный дочерний элемент находится сверху. Размер FrameLayout — это размер его самого большого дочернего элемента (плюс заполнение), видимого или нет (если разрешает родитель FrameLayout).
RelativeLayout — очень мощная утилита для разработки пользовательского интерфейса, поскольку она может исключить вложенные группы представлений и сохранить плоскую иерархию макета, что повышает производительность. Если вы обнаружите, что используете несколько вложенных групп LinearLayout, вы можете заменить их одним RelativeLayout.
(Текущие документы здесь)
TableLayout состоит из нескольких
TableRow
объектов, каждый из которых определяет строку (на самом деле у вас могут быть и другие дочерние элементы, что будет объяснено ниже). Контейнеры TableLayout не отображают линии границ для своих строк, столбцов или ячеек. Каждая строка содержит ноль или более ячеек; каждая ячейка может содержать один объект View. В таблице столько столбцов, сколько строк с наибольшим количеством ячеек. Таблица может оставлять ячейки пустыми. Ячейки могут охватывать столбцы, как и в HTML.Ширина столбца определяется строкой с самой широкой ячейкой в этом столбце.
Примечание. Абсолютный макет устарел.
LinearLayout : макет, который организует свои дочерние элементы в одну горизонтальную или вертикальную строку. Он создает полосу прокрутки, если длина окна превышает длину экрана. Это означает, что вы можете выравнивать виды один за другим (вертикально/горизонтально).
RelativeLayout : позволяет указать расположение дочерних объектов относительно друг друга (дочерний объект A слева от дочернего объекта B) или относительно родителя (выровнен по верхней части родительского объекта). Он основан на соотношении взглядов его родителей и других взглядов.
WebView : для загрузки html, статических или динамических страниц.
Для получения дополнительной информации перейдите по этой ссылке: http://developer.android.com/guide/topics/ui/layout-objects.html
LinearLayout. В LinearLayout представления организованы либо вертикально, либо горизонтально.
RelativeLayout. RelativeLayout намного сложнее, чем LinearLayout, поэтому предоставляет гораздо больше функций. Представления размещаются, как следует из названия, относительно друг друга.
FrameLayout — ведет себя как единый объект, а его дочерние представления накладываются друг на друга. FrameLayout принимает размер самого большого дочернего элемента.
Раскладка координатора. Это самая мощная ViewGroup, представленная в библиотеке поддержки Android. Он ведет себя как FrameLayout и имеет множество функций для координации между его дочерними представлениями, например, плавающую кнопку и закусочную панель, панель инструментов с прокручиваемым представлением.
Отличное объяснение здесь:
https://www.cuelogic.com/blog/using-framelayout-for-designing-xml-layouts-in-android
LinearLayout размещает элементы рядом друг с другом по горизонтали или по вертикали.
RelativeLayout помогает расположить элементы пользовательского интерфейса на основе определенных правил. Вы можете указать такие правила, как: выровнять это по левому краю родителя, разместить это слева/справа от этого элемента и т. д.
AbsoluteLayout предназначен для абсолютного позиционирования, т. е. вы можете указать точные координаты, где должно находиться представление.
FrameLayout позволяет размещать представления вдоль оси Z. Это означает, что вы можете размещать элементы представления один над другим.