5 лет назад

Android. Всё о LinearLayout - 2


Здравствуйте.
Это вторая статья на тему разбора контейнера компоновки LinearLayout. Первая часть здесь.

Вес - layout_weight

layout_weight очень важное свойство, которое позволяет назначить  элементу значимость размера относительно других элементов в контейнере.
Предположим, что у нас, в горизонтальном направлении есть 3 кнопки и если мы их расположим друг за другом, то они займут только отведённое для них место и это может выглядеть далеко не пропорционально, а если мы назначим каждой кнопке атрибут android:layout_weight="1", тогда все кнопки станут одинаковыми, но если мы хотим одинаковые по размеру левую и правую кнопки, а для средней лишь остаток места, тогда присвоим второй кнопке значение 0 для layout_weight.

Перейдём к примерам.
листинг 1
<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="vertical"
              android:layout_width="fill_parent"
              android:layout_height="fill_parent">
    <LinearLayout android:layout_width="fill_parent"
                  android:layout_height="fill_parent"
                  android:orientation="horizontal"
                  android:background="#eee"
                  android:layout_weight="1">
        <Button android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="Вес кнопки 1"/>
        <Button android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="Вес кнопки 1"/>
    </LinearLayout>
    <LinearLayout android:layout_width="fill_parent"
                  android:layout_height="fill_parent"
                  android:orientation="horizontal"
                  android:background="#ccc"
                  android:layout_weight="1">
        <Button android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="Вес кнопки 1"/>
        <Button android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="Вес кнопки 1"/>
        <Button android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="Вес кнопки 1"/>
    </LinearLayout>
    <LinearLayout android:layout_width="fill_parent"
                  android:layout_height="fill_parent"
                  android:orientation="vertical"
                  android:background="#aaa"
                  android:gravity="center_horizontal"
                  android:layout_weight="1">
        <Button android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="Вес кнопки 1"/>
        <Button android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="Вес кнопки 1"/>
        <Button android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="Вес кнопки 1"/>
    </LinearLayout>
</LinearLayout>
Результат:

пример #1 работы с android:layout_weight

Итак, разберём пример.
Для начала мы создаём 3 контейнера LinearLayout (внутри корневого). Чтобы визуально выделить их, зададим каждому свой фоновый цвет атрибутом android:background. Для того, чтобы эти контейнеры ровно распределились по нашему экрану, зададим каждому атрибуту android:layout_weight значение равное 1 (по умолчанию установлено 0).
Отлично! Далее в каждый контейнер мы добавили кнопки и также задали им значение атрибута android:layout_weight равное 1. В первый контейнер с горизонтальной ориентацией мы добавили 2 кнопки, во второй 3 кнопки и в 3-ий с вертикальной ориентацией также 3 кнопки. Как видно из скриншота, они идеально распределили свободное пространство.
5 лет назад

Android. Всё о LinearLayout - 1


Этой статьёй, я открываю цикл с полным разбором функциональности Android виджетов и макетов (layout).

Начнём с макетов, а точнее разберём и перемоем все косточки диспетчеру компоновки LinearLayout.

В 2 словах, этот диспетчер позволяет компоновать внутри себя различные элементы один за одним либо вертикально, либо горизонтально. LinearLayout может быть корневым элементом макета (layout) и быть вложенным сам в себя сколько потребуется раз. Также можно взаимодействовать с другим компонвками, например, RelativeLayout, как быть вложенным, так и быть родителем.

Начнём сразу с примеров или прямиком с места в карьер.

Я буду приводить XML код компоновки и тут же аналог кода на JAVA.

Ориентация контента

Для того, чтобы задать ориентацию, воспользуйтесь атрибутом orientationв xml коде макета или методом setOrientation в JAVA коде.

В  xml
android:orientation="horizontal"
android:orientation="vertical"
В Java
// LinearLayout - элемент созданный в xml или java коде
linearLayout.setOrientation(LinearLayout.HORIZONTAL);
linearLayout.setOrientation(LinearLayout.VERTICAL);

Хочу обратить ваше внимание, что по умолчанию LinearLayout использует горизонтальную ориентацию.

5 лет назад

Hello World


Hello World

Страницы:
3