Подтвердить что ты не робот

Android: попытка понять андроид: layout_weight

Я пытаюсь разделить страницу на три части. Я хотел бы сделать это в процентных значениях, однако это не поддерживается Android. Вместо этого я должен использовать android:layout_weight. Но мне трудно понять это и понять. Тем более, как рассчитывается фактический размер. Есть ли способ получить процентное значение (0..100%) из android:layout_weight?

Я просмотрел несколько случаев (см. прилагаемый скриншот), чтобы описать проблемы. Цветные поля - это <LinearLayout> с android:layout_height="fill_parent", потому что я хочу, чтобы весь экран был разделен между ними.

Случай 1

alt text

Хорошо, просто. Каждый <LinearLayout> получает 33%.

Случай 2

alt text

Ups?! Первый (желтый) <LinearLayout> полностью исчезает? Почему?

Случай 3

alt text

Снова запутался. Желтый <LinearLayout> вернулся. Однако два первых <LinearLayout> с более тяжелым весом становятся меньше? Что происходит?

Случай 4

alt text

Я понятия не имею, что такое математика за всем этим.

4b9b3361

Ответ 1

Есть ли способ получить процентное значение (0..100%) из android: layout_weight?

Конечно. Сделайте их до 100.

Для вашего "процентного значения" вы хотите, чтобы android:layout_height отдельных элементов в LinearLayout был 0px.

Ответ 2

Когда вы используете андроид: layout_height = "fill_parent" для баров, вы не оставляете свободного места. (Так как они заполняют родительский элемент.) Поскольку все 3 заданы для заполнения, запрашиваемая высота фактически равна 3x родительской высоте, поэтому весы применяются к отрицательному оставшемуся пространству. Это объясняет странное поведение, которое вы видите, и почему настройка layout_height на 0px разрешает его.