LinearLayout — это группа представлений, которая выравнивает всех дочерних элементов в одном направлении, по вертикали или по горизонтали. Вы можете указать направление макета с помощью атрибута android:orientation .
Рисунок 1.LinearLayout с тремя горизонтально ориентированными дочерними элементами.
Все дочерние элементы LinearLayout располагаются один за другим, поэтому вертикальный список имеет только один дочерний элемент в каждой строке, независимо от их ширины. Горизонтальный список имеет высоту всего в одну строку, и это высота самого высокого дочернего элемента плюс отступы. LinearLayout учитывает поля между дочерними элементами и гравитацию (выравнивание по правому, центру или левому краю) каждого дочернего элемента.
Вес макета
LinearLayout также поддерживает присвоение веса отдельным дочерним элементам с помощью атрибута android:layout_weight . Этот атрибут присваивает представлению значение «важности» с точки зрения того, сколько места оно занимает на экране. Большее значение веса позволяет ему расшириться, чтобы заполнить оставшееся пространство в родительском представлении. Дочерние представления могут указывать значение веса, и все оставшееся пространство в группе представлений назначается дочерним элементам пропорционально на основе их объявленного веса. Вес по умолчанию равен нулю.
Равное распределение
Чтобы создать линейный макет, в котором каждый дочерний элемент использует одинаковое пространство на экране, установите android:layout_height каждого представления значение "0dp" для вертикального макета или для android:layout_width каждого представления значение "0dp" для горизонтальная планировка. Затем установите android:layout_weight каждого представления значение "1" .
Неравномерное распределение
Вы также можете создавать линейные макеты, в которых дочерние элементы занимают разное пространство на экране. Рассмотрим следующие примеры:
Предположим, у вас есть три текстовых поля: два со значением веса 1 и третье со значением веса по умолчанию 0. Третье текстовое поле со значением веса 0 занимает только область, необходимую для его содержимого. Два других текстовых поля со значением веса 1 расширяются одинаково, чтобы заполнить пространство, оставшееся после измерения содержимого всех трех полей.
Если вместо этого у вас есть три текстовых поля, из которых два имеют весовое значение 1, а третье имеет вес 2, то пространство, оставшееся после измерения содержимого всех трех полей, распределяется следующим образом: половина на поле с весом значение 2, а половина делится поровну между полями со значением веса 1.
На следующем рисунке и фрагменте кода показано, как веса макета могут работать в действии «отправка сообщения». Поле «Кому» , строка «Тема» и кнопка «Отправить» занимают только необходимую высоту. Область сообщений занимает остальную высоту активности.
Рисунок 2. Три текстовых поля и кнопка в вертикально ориентированном LinearLayout .
Подробные сведения об атрибутах, доступных для каждого дочернего представления LinearLayout , см. LinearLayout.LayoutParams .
Контент и образцы кода на этой странице предоставлены по лицензиям. Java и OpenJDK – это зарегистрированные товарные знаки корпорации Oracle и ее аффилированных лиц.
Последнее обновление: 2025-07-29 UTC.
[[["Прост для понимания","easyToUnderstand","thumb-up"],["Помог мне решить мою проблему","solvedMyProblem","thumb-up"],["Другое","otherUp","thumb-up"]],[["Отсутствует нужная мне информация","missingTheInformationINeed","thumb-down"],["Слишком сложен/слишком много шагов","tooComplicatedTooManySteps","thumb-down"],["Устарел","outOfDate","thumb-down"],["Проблема с переводом текста","translationIssue","thumb-down"],["Проблемы образцов/кода","samplesCodeIssue","thumb-down"],["Другое","otherDown","thumb-down"]],["Последнее обновление: 2025-07-29 UTC."],[],[],null,["# Create a linear layout\n\nTry the Compose way \nJetpack Compose is the recommended UI toolkit for Android. Learn how to work with layouts in Compose. \n[Column or Row →](/jetpack/compose/layouts/basics) \n\n[LinearLayout](/reference/android/widget/LinearLayout)\nis a view group that aligns all children in a single direction, vertically or\nhorizontally. You can specify the layout direction with the\n[`android:orientation`](/reference/android/widget/LinearLayout#attr_android:orientation)\nattribute.\n| **Note:** For better performance and tooling support, [build your layout with\n| ConstraintLayout](/training/constraint-layout). Learn more about advantages of using `ConstraintLayout` by reading [Understanding\n| the performance benefits of ConstraintLayout](https://android-developers.googleblog.com/2017/08/understanding-performance-benefits-of.html).\n**Figure 1.** A `LinearLayout` with three horizontally oriented children.\n\nAll children of a `LinearLayout` are stacked one after the other,\nso a vertical list only has one child per row, no matter how wide they are. A\nhorizontal list is only one row high, and it's the height of the tallest child,\nplus padding. A `LinearLayout` respects *margins* between\nchildren, and the *gravity*---right, center, or left\nalignment---of each child.\n\nLayout weight\n-------------\n\n`LinearLayout` also supports assigning a *weight* to\nindividual children with the\n[`android:layout_weight`](/reference/android/widget/LinearLayout.LayoutParams#attr_android:layout_weight)\nattribute. This attribute assigns an \"importance\" value to a view in terms of\nhow much space it occupies on the screen. A larger weight value lets it expand\nto fill the remaining space in the parent view. Child views can specify a weight\nvalue, and any remaining space in the view group is assigned to children\nproportionately, based on their declared weight. The default weight is zero.\n\n### Equal distribution\n\nTo create a linear layout in which each child uses the same amount of space\non the screen, set the\n[`android:layout_height`](/reference/android/view/ViewGroup.LayoutParams#attr_android:layout_height)\nof each view to `\"0dp\"` for a vertical layout, or the\n[`android:layout_width`](/reference/android/view/ViewGroup.LayoutParams#attr_android:layout_width)\nof each view to `\"0dp\"` for a horizontal layout. Then set the\n`android:layout_weight` of each view to `\"1\"`.\n\n### Unequal distribution\n\nYou can also create linear layouts where the child elements use different\namounts of space on the screen. Consider the following examples:\n\n- Suppose you have three text fields: two with a weight value of 1, and a third with the default weight value of 0. The third text field, with the weight value of 0, occupies only the area required by its content. The other two text fields, with the weight value of 1, expand equally to fill the space that remains after the contents of all three fields are measured.\n- If instead you have three text fields where two have a weight value of 1 and the third has a weight of 2, then the space that remains after the contents of all three fields are measured is allocated as follows: half to the field with the weight value of 2, and half divided equally between the fields with the weight value of 1.\n\nThe following figure and code snippet show how layout weights might work in a\n\"send message\" activity. The **To** field, **Subject** line, and\n**Send** button each take up only the height they need. The message area\ntakes up the rest of the activity's height.\n**Figure 2.** Three text fields and a button in a vertically oriented `LinearLayout`. \n\n```xml\n\u003c?xml version=\"1.0\" encoding=\"utf-8\"?\u003e\n\u003cLinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n android:layout_width=\"match_parent\"\n android:layout_height=\"match_parent\"\n android:paddingLeft=\"16dp\"\n android:paddingRight=\"16dp\"\n android:orientation=\"vertical\" \u003e\n \u003cEditText\n android:layout_width=\"match_parent\"\n android:layout_height=\"wrap_content\"\n android:hint=\"@string/to\" /\u003e\n \u003cEditText\n android:layout_width=\"match_parent\"\n android:layout_height=\"wrap_content\"\n android:hint=\"@string/subject\" /\u003e\n \u003cEditText\n android:layout_width=\"match_parent\"\n android:layout_height=\"0dp\"\n android:layout_weight=\"1\"\n android:gravity=\"top\"\n android:hint=\"@string/message\" /\u003e\n \u003cButton\n android:layout_width=\"100dp\"\n android:layout_height=\"wrap_content\"\n android:layout_gravity=\"end\"\n android:text=\"@string/send\" /\u003e\n\u003c/LinearLayout\u003e\n```\n\nFor details about the attributes available to each child view of a\n`LinearLayout`, see\n[LinearLayout.LayoutParams](/reference/android/widget/LinearLayout.LayoutParams)."]]