Обязательно ли использовать FrameLayout для загрузки фрагментов? - PullRequest
0 голосов
/ 10 января 2020



Я видел, что большинство людей использует FrameLayout для загрузки Fragments.
Мой вопрос Почему FrameLayout? , а почему не другие, такие как LinearLayout, RelativeLayout или ConstraintLayout. Большинство ответов в StackOverflow гласит: FrameLayout предназначен для блокировки области на экране для отображения одного элемента. Но другие также могут блокировать весь экран, если его высота и ширина установлены на match_parent.

В чем разница?
Почему большинство людей выбирают FrameLayout, если другие могут выполнять ту же работу?

Заранее спасибо
Приветствия

Ответы [ 3 ]

3 голосов
/ 10 января 2020

Вы можете использовать что угодно (LinearLayout, RelativeLayout или ConstraintLayout).

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

1 голос
/ 10 января 2020

Я не очень хорош в программировании, но могу привести несколько причин.

Сначала взгляните на официальные документы.

Чтобы заменить один фрагмент с другой, макет действия включает в себя пустой FrameLayout, который действует как контейнер фрагмента. https://developer.android.com/training/basics/fragments/fragment-ui#AddAtRuntime

Это означает, что для переключения между несколькими фрагментами мы должны использовать FrameLayout. Почему Framelayout тогда? Еще один взгляд на официальные документы.

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

Может блокировать область экрана для отображения одного элемента. Другие макеты тоже могут делать то же самое. Итак, Frame?

Поскольку у FrameLayout есть одна характеристика c, которой нет у других макетов.

FrameLayout может удерживать своего дочернего элемента один над другим, как колода карт. В колоде карт одна карта помещается над другой.

FrameLayout выполняет ту же работу. Когда вы используете FrameLayout в качестве контейнера фрагмента, он удерживает дочерний фрагмент один над другим, как того требует ваш код. Затем он показывает одно и оставляет других позади, вы переключаетесь обратно на другие фрагменты, затем он поднимается выше, а другие go снова.

Это все, что я знаю.

1 голос
/ 10 января 2020

FrameLayout Чтобы загрузить дочерний элемент один над другим, например, карточки внутри рамки, мы можем разместить одну над другой или в любом месте внутри рамки. Предназначен для отображения стека дочерних элементов управления View. К этому макету можно добавить несколько элементов управления представлением. Это можно использовать для отображения нескольких элементов управления в одном и том же пространстве экрана.

LinearLayout Предназначен для отображения дочерних элементов управления View в одной строке или столбце. Это очень удобный метод макета для создания форм.

RelativeLayout Предназначен для отображения дочерних элементов управления View по отношению друг к другу. Например, вы можете установить элемент управления так, чтобы он располагался «выше» или «ниже» или «слева от» или «справа от» другого элемента управления, на который ссылается его уникальный идентификатор. Вы также можете выровнять дочерние элементы управления View относительно родительских ребер.

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

Надеюсь, это полезно для вас!

...