Что произойдет при добавлении пяти кнопок во FrameLayout без указания расположения
Что проверяют
Знаете ли модель размещения FrameLayout и понимаете ли, как из неё следуют порядок отрисовки и доставка касаний. Вопрос простой, но по ответу видно, читал ли кандидат про разметку или собирал экраны перетаскиванием в редакторе.
Как отвечать
FrameLayout не раскладывает детей, он кладёт их друг на друга. Без layout_gravity каждый ребёнок ставится в начало контейнера, то есть в верхний левый угол для привычного направления письма. Пять кнопок окажутся в одной точке, стопкой. Размер самого контейнера при wrap_content посчитается по самому крупному ребёнку.
Порядок отрисовки это порядок в разметке: последняя кнопка рисуется поверх предыдущих. Видно будет её, а от остальных только выступающие края, если они шире или выше. Касание получает верхний вид в точке нажатия, так что там, где верхняя кнопка соседей не перекрывает, нажмётся сосед.
Управлять этим можно несколькими способами:
layout_gravityи отступы разводят детей по углам и краям, это штатный приём дляFrameLayout;elevationиtranslationZменяют порядок наложения независимо от порядка в разметке;bringChildToFrontподнимает вид программно.
Если нужен ряд, колонка или сетка, берут LinearLayout или ConstraintLayout, а FrameLayout оставляют для того, для чего он есть: контейнер фрагмента, наложение поверх картинки, индикатор загрузки.
Где спотыкаются
Ожидают, что контейнер сам разложит детей подряд, и ищут ошибку в размерах кнопок вместо того, чтобы посмотреть на выбранный контейнер.
Второе: путают gravity и layout_gravity. Первый выравнивает содержимое внутри самого вида, второй располагает вид внутри родителя. В FrameLayout нужен второй, и перепутанный атрибут ничего не двигает.
Третье: объясняют проблему производительностью и перерисовкой. Пять перекрывающихся кнопок это ошибка вёрстки, а не нагрузка. Про лишнюю отрисовку говорят, когда друг на друга ложатся крупные непрозрачные фоны на весь экран.