Панели инструментов считаются представлениями?

1

Я работал над одним из учебных пособий по дизайну материалов, когда заметил, что один из их фрагментов использует FrameLayout с панелью инструментов и RecyclerView. Это кажется странным, учитывая, что документация для FrameLayout имеет:

FrameLayout предназначен для блокировки области на экране для отображения одного элемента. Как правило, FrameLayout должен использоваться для хранения одного дочернего представления...

  • Зачем учебнику добавлять панель инструментов и RecyclerView в FrameLayout, если он был разработан, чтобы содержать только одно представление?
  • Сами панели инструментов не считаются представлениями?

  • RecyclerView - единственный объект, явно представленный здесь с представлением в названии, но что такое объект панели инструментов, если не является представлением?

Документация FrameLayout также имеет:

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

  • Почему документация противоречит самой себе? Сначала (первая цитата) говорится, что FrameLayout предназначен для хранения одного представления, затем позже (вторая цитата) говорится, что можно добавить несколько дочерних элементов. Я неправильно понимаю, что такое "ребенок"?

  • Действительно ли панель инструментов и RecyclerView накладываются друг на друга?

Я заметил, что родительский макет RecyclerView (NestedScrollView) использует android:layout_marginTop="56dp", предположительно, чтобы переместить его начало ниже конца панели инструментов (действительно, если это поле было установлено равным 0dp, то панель инструментов будет скрывать некоторые из RecyclerView), Таким образом, учитывая "стековую" природу дочерних элементов FrameLayout, я ожидал, что RecyclerView будет в верхней части панели инструментов, если я удалил этот атрибут marginTop из RecyclerView (поскольку RecyclerView добавляется после панели инструментов в дизайне xml). Это не сработало, однако; Панель инструментов, казалось, сохраняла свое видное положение на "вершине стека", так сказать.

  • Используется ли FrameLayout в этом примере больше как универсальный контейнер, где дочерние представления самостоятельно управляют своими позициями в видимой области (учитывая жестко запрограммированное использование android:layout_marginTop="56dp" в NestedScrollView)?

  • Если панель инструментов является представлением, неявно ли ей присваивается такой вес, чтобы он всегда оставался на вершине просматриваемого стека завышенных представлений? Можно утверждать, что это имеет смысл для целей панели инструментов.

Теги:
toolbar
android-framelayout

1 ответ

0

FrameLayout может использоваться для добавления более одного дочернего представления.

Сами панели инструментов не считаются представлениями?

Все объекты пользовательского интерфейса, например, панели инструментов, кнопки и т.д., ViewGroup объект View внизу, где некоторые могут расширять ViewGroup (ToolBar) в иерархии, но на самом деле даже ViewGroup расширяет объект View.


Почему документация противоречит самой себе? Сначала (первая цитата) говорится, что FrameLayout предназначен для хранения одного представления, затем позже (вторая цитата) говорится, что можно добавить несколько дочерних элементов. Я неправильно понимаю, что такое "ребенок"?

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


Если панель инструментов является представлением, неявно ли ей присваивается такой вес, чтобы он всегда оставался на вершине просматриваемого стека завышенных представлений? Можно утверждать, что это имеет смысл для целей панели инструментов.

Ofcourse Toolbar - это View, или вы можете сказать ViewGroup,
Это не значит, что он остается на вершине стека Viewable или завышенных представлений.
Вы всегда можете контролировать, где вы хотите показать панель инструментов..
Причина, по которой он отображается в верхней части, состоит в том, что общепринятым является показ меню заголовка и других параметров в верхней части представления.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню