Вес в макете (атрибут weight)

Курс "Программирование под Андроид"
2 уровень , 5 лекция
Открыта

Ссылка на визуализатор XML

В этом уроке мы использовали такой термин:

Вес в макете layout_weight

Его определение можно найти в Словаре терминов.

Свои ответы и вопросы можете оставлять в комментариях.

Комментарии (79)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Dmytro Уровень 26
17 сентября 2024
не понял...а где изображение то брать?
Dan Уровень 2
5 июля 2022
Руслан Уровень 21
27 июня 2022
misha_lazarev Уровень 34
25 мая 2022
Очень полезное видео, большое спасибо=)
5 апреля 2022
Anonymous #2845414 Уровень 3
22 октября 2021
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <ImageView android:src="@drawable/ocean" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:scaleType="centerCrop" /> <TextView android:text="You're invited!" android:layout_width="match_parent" android:layout_height="wrap_content" android:textColor="@android:color/white" android:textSize="54sp" android:background="#009688" /> <TextView android:text="Bonfire at the beach" android:layout_width="match_parent" android:layout_height="wrap_content" android:textColor="@android:color/white" android:textSize="34sp" android:background="#009688" /> </LinearLayout>
fedor Уровень 24
4 октября 2021
не понятно, почему если в любой TextView оставить

android:layout_width="wrap_content"
ширина все равно будет эквивалентна

android:layout_width="match_parent"
Anonymous #2858433 Уровень 1
27 октября 2021
кстати, да, интересно почему
Plazmid Уровень 1
8 декабря 2021
Потому что в данном случае мы применяем макет LinearLayout. А значит все дочерние элементы помещаются в стек один за другим, так что вертикальный список компонентов будет иметь только один дочерний элемент в ряду независимо от того, насколько широким он является. Горизонтальное расположение списка будет размещать элементы в одну строку с высотой, равной высоте самого высокого дочернего элемента списка. Попробуй применить RelativeLayout и посмотри разницу.
Андрей Уровень 4
1 октября 2021
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <ImageView android:src="@drawable/ocean" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:scaleType="centerCrop" /> <TextView android:text="You're invited!" android:layout_width="match_parent" android:layout_height="wrap_content" android:textColor="@android:color/white" android:textSize="54sp" android:background="#009688" /> <TextView android:text="Bonfire at the beach" android:layout_width="match_parent" android:layout_height="wrap_content" android:textColor="@android:color/white" android:textSize="34sp" android:background="#009688" /> </LinearLayout>
Эшли Уровень 10
8 сентября 2021
По идее, достаточно равномерно распределить android:layout_weight у всех элементов, или, вообще поставить, скажем, android:layout_weight ="2" у ImageView, и всё будет норм.
Марина М Уровень 2
12 августа 2021
Теперь я поняла почему 0 нужен
Виктор Вик Уровень 33
14 августа 2021
А я не понял. Подскажите, почему нужно обязательно указывать 0dp даже для тех, у кого weight указано?
Марина М Уровень 2
4 ноября 2021
Сначала программа выделяет место в макете для тех элеметов, у которых ненулевая высота, потом то пространство высоты, которое осталось незанятым делится пропорционально весам. Если высота 0, то пространства на дележку остается больше, потому что вычитать нечего. Вряд ли я понятно объяснила.