Если вы представляете вещи в вертикальном или горизонтальном стеке, вы должны использовать LinearLayout
, а затем использовать атрибут layout_weight
для управления пропорциями отдельных строк / столбцов в контейнере.
Если вы хотите размер экрана, установите layout_width
и layout_height
на fill_parent
, в противном случае вы не получите все доступные размеры экрана. Если вы попытаетесь использовать wrap_content
для высоты, все рухнет, если вы не прибегаете к дополнительным ограничениям макета, например, minHeight
.
Мы используем это везде, и это довольно надежно. Для трех предметов вы можете использовать 1/1/1
или 3/3/3
.
Веса также не должны быть равными! Вы можете разделить пропорции по своему усмотрению; веса - это просто относительные отношения всего промежутка (ширина / высота). Например. если вы хотите, чтобы средний элемент был в два раза больше, используйте 1/2/1
; если хотите 40% используйте 30/40/30
или 3/4/3
.
Хорошая «хитрость» - использовать layout_weight
= 1 ровно в одной строке / столбце (другие по умолчанию равны нулю), и он «заполнит» оставшееся пространство. Это распространенный сценарий макета.
Если вам нужен стек для прокрутки, вы можете поместить его в ScrollView
. В этом случае вы должны установить layout_height
из LinearLayout
на wrap_content
, и вы будете подвергаться коллапсу в зависимости от прихоти системы макетов (то есть вам нужно будет использовать минимальные / максимальные ограничения).