Ответ 1
Базовая компоновка каждого действия - FrameLayout
. Это означает, что макет, который вы обычно устанавливаете с помощью setContentView()
, является дочерним элементом этого макета. addContentView()
добавляет только еще один ребенок, поэтому он ведет себя как a FrameLayout
(что означает, что он добавляет новые элементы пользовательского интерфейса выше существующих).
Вы можете проверить это, используя инструмент hierachyviewer
из папки ANDROID_SDK\tools
. Вот два скриншота:
Это макет перед вызовом addContentView()
, моя активность состоит из по умолчанию FrameLayout, удерживающего LinearLayout с помощью кнопки (мой макет здесь). Это отражено в нижней строке, а остальные элементы - это заголовок/панель состояния.
После добавления TextView через addContentView()
он выглядит так. Вы можете видеть, что базовый FrameLayout получил новый ребенок.