Ресурс макета
Оптимизируйте свои подборки
Сохраняйте и классифицируйте контент в соответствии со своими настройками.
Ресурс макета определяет архитектуру пользовательского интерфейса в Activity
или компоненте пользовательского интерфейса.
- расположение файла:
-
res/layout/ filename .xml
Имя файла используется в качестве идентификатора ресурса. - тип данных скомпилированного ресурса:
- Указатель ресурса на ресурс
View
(или подкласса) - ссылка на ресурс:
- В Java:
R.layout. filename
В XML: @[ package :]layout/ filename
- синтаксис:
<?xml version="1.0" encoding="utf-8"?>
<ViewGroup
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@[+][package:]id/resource_name"
android:layout_height=["dimension" | "match_parent" | "wrap_content"]
android:layout_width=["dimension" | "match_parent" | "wrap_content"]
[ViewGroup-specific attributes] >
<View
android:id="@[+][package:]id/resource_name"
android:layout_height=["dimension" | "match_parent" | "wrap_content"]
android:layout_width=["dimension" | "match_parent" | "wrap_content"]
[View-specific attributes] >
<requestFocus/>
</View>
<ViewGroup >
<View />
</ViewGroup>
<include layout="@layout/layout_resource"/>
</ViewGroup>
Примечание. Корневым элементом может быть элемент ViewGroup
, View
или <merge>
, но корневой элемент может быть только один, и он должен содержать атрибут xmlns:android
с пространством имен android
, как показано в предыдущем примере синтаксиса.
- элементы:
-
<ViewGroup>
- Контейнер для других элементов
View
. Существует множество различных типов объектов ViewGroup
, и каждый из них позволяет по-разному определять расположение дочерних элементов. Различные типы объектов ViewGroup
включают LinearLayout
, RelativeLayout
и FrameLayout
. Не предполагайте, что любое производное от ViewGroup
принимает вложенные представления. Некоторые группы представлений являются реализациями класса AdapterView
, который определяет своих дочерних элементов только из Adapter
.
Атрибуты:
-
android:id
- Идентификатор ресурса . Уникальное имя ресурса для элемента, которое можно использовать для получения ссылки на
ViewGroup
из вашего приложения. Дополнительные сведения см. в разделе Значение для android:id . -
android:layout_height
- Измерение или ключевое слово . Необходимый . Высота группы в виде значения измерения (или ресурса измерения ) или ключевого слова (
"match_parent"
или "wrap_content"
). Дополнительные сведения см. в разделе «Значения для android:layout_height» и «android:layout_width» . -
android:layout_width
- Измерение или ключевое слово . Необходимый . Ширина группы в виде значения измерения (или ресурса измерения ) или ключевого слова (
"match_parent"
или "wrap_content"
). Дополнительные сведения см. в разделе «Значения для android:layout_height» и «android:layout_width» .
Базовый класс ViewGroup
поддерживает больше атрибутов, и многие другие поддерживаются каждой реализацией ViewGroup
. Справочник по всем доступным атрибутам см. в соответствующей справочной документации для класса ViewGroup
, например XML-атрибуты LinearLayout
.
-
<View>
- Отдельный компонент пользовательского интерфейса, обычно называемый виджетом . Различные типы объектов
View
включают TextView
, Button
и CheckBox
. Атрибуты:
-
android:id
- Идентификатор ресурса . Уникальное имя ресурса для элемента, которое можно использовать для получения ссылки на
View
из вашего приложения. Дополнительные сведения см. в разделе Значение для android:id . -
android:layout_height
- Измерение или ключевое слово . Необходимый . Высота элемента в виде значения измерения (или ресурса измерения ) или ключевого слова (
"match_parent"
или "wrap_content"
). Дополнительные сведения см. в разделе «Значения для android:layout_height» и «android:layout_width» . -
android:layout_width
- Измерение или ключевое слово . Необходимый . Ширина элемента в виде значения измерения (или ресурса измерения ) или ключевого слова (
"match_parent"
или "wrap_content"
). Дополнительные сведения см. в разделе «Значения для android:layout_height» и «android:layout_width» .
Базовый класс View
поддерживает больше атрибутов, и многие другие поддерживаются каждой реализацией View
. Для получения дополнительной информации прочтите Макеты . Справочник по всем доступным атрибутам см. в соответствующей справочной документации, например, XML-атрибуты TextView
.
-
<requestFocus>
- Любой элемент, представляющий объект
View
, может включать этот пустой элемент, который дает его родительскому элементу первоначальный фокус на экране. В каждом файле может быть только один из этих элементов. -
<include>
- Включает файл макета в этот макет.
Атрибуты:
-
layout
- Ресурс макета . Необходимый . Ссылка на ресурс макета.
-
android:id
- Идентификатор ресурса . Переопределяет идентификатор, присвоенный корневому представлению во включенном макете.
-
android:layout_height
- Измерение или ключевое слово . Переопределяет высоту, заданную корневому представлению во включенном макете. Действует только в том случае, если также объявлен
android:layout_width
. -
android:layout_width
- Измерение или ключевое слово . Переопределяет ширину, заданную корневому представлению во включенном макете. Действует только в том случае, если также объявлен
android:layout_height
.
Вы можете включить в <include>
любые другие атрибуты макета, которые поддерживаются корневым элементом включенного макета, и они переопределяют атрибуты, определенные в корневом элементе.
Внимание: если вы хотите переопределить атрибуты макета с помощью тега <include>
, вам необходимо переопределить android:layout_height
и android:layout_width
, чтобы другие атрибуты макета вступили в силу.
Другой способ включить макет — использовать ViewStub
: облегченное представление, которое не занимает пространство макета, пока вы явно не раздуете его. Когда вы это сделаете, он включает файл макета, определенный его атрибутом android:layout
. Дополнительные сведения об использовании ViewStub
см. в разделе Загрузка представлений по требованию .
-
<merge>
- Альтернативный корневой элемент, который не отображается в иерархии макета. Использование его в качестве корневого элемента полезно, если вы знаете, что этот макет помещен в макет, который уже содержит соответствующий родительский
View
, содержащий дочерние элементы элемента <merge>
. Это особенно полезно, если вы планируете включить этот макет в другой файл макета с помощью <include>
, и для этого макета не требуется другой контейнер ViewGroup
. Дополнительные сведения об объединении макетов см. в статье Повторное использование макетов с помощью <include> .
Значение для Android:id
Для значения идентификатора обычно используется следующая синтаксическая форма: "@+id/ name "
, как показано в следующем примере. Символ плюса +
указывает, что это новый идентификатор ресурса, и инструмент aapt
создает новое целое число ресурса в классе R.java
, если оно еще не существует.
<TextView android:id="@+id/nameTextbox"/>
Имя nameTextbox
теперь является идентификатором ресурса, прикрепленным к этому элементу. Затем вы можете обратиться к TextView
, с которым связан идентификатор в Java:
Котлин
val textView: TextView? = findViewById(R.id.nameTextbox)
Ява
TextView textView = findViewById(R.id.nameTextbox);
Этот код возвращает объект TextView
.
Однако если вы уже определили ресурс ID и он еще не используется, вы можете применить этот идентификатор к элементу View
, исключив символ плюса из значения android:id
.
Значения для android:layout_height и android:layout_width
Значения высоты и ширины выражаются с использованием любых единиц измерения, поддерживаемых Android (px, dp, sp, pt, дюймы, мм), или с помощью следующих ключевых слов:
Ценить | Описание |
---|
match_parent | Устанавливает размер, соответствующий размеру родительского элемента. Добавлен на уровне API 8 для прекращения поддержки fill_parent . |
wrap_content | Устанавливает размер только до размера, необходимого для соответствия содержимому этого элемента. |
Пользовательские элементы представления
Вы можете создавать собственные элементы View
и ViewGroup
и применять их к макету так же, как стандартный элемент макета. Вы также можете указать атрибуты, поддерживаемые в элементе XML. Дополнительные сведения см. в разделе Создание пользовательских компонентов представления .
- пример:
- XML-файл, сохраненный в
res/layout/main_activity.xml
:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello, I am a TextView" />
<Button android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello, I am a Button" />
</LinearLayout>
Этот код приложения загружает макет Activity
в методе onCreate()
:
Котлин
public override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.main_activity)
}
Ява
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_activity);
}
- см. также:
Контент и образцы кода на этой странице предоставлены по лицензиям. Java и OpenJDK – это зарегистрированные товарные знаки корпорации Oracle и ее аффилированных лиц.
Последнее обновление: 2024-08-21 UTC.
[{
"type": "thumb-down",
"id": "missingTheInformationINeed",
"label":"Отсутствует нужная мне информация"
},{
"type": "thumb-down",
"id": "tooComplicatedTooManySteps",
"label":"Слишком сложен/слишком много шагов"
},{
"type": "thumb-down",
"id": "outOfDate",
"label":"Устарел"
},{
"type": "thumb-down",
"id": "translationIssue",
"label":"Проблема с переводом текста"
},{
"type": "thumb-down",
"id": "samplesCodeIssue",
"label":"Проблемы образцов/кода"
},{
"type": "thumb-down",
"id": "otherDown",
"label":"Другое"
}]
[{
"type": "thumb-up",
"id": "easyToUnderstand",
"label":"Прост для понимания"
},{
"type": "thumb-up",
"id": "solvedMyProblem",
"label":"Помог мне решить мою проблему"
},{
"type": "thumb-up",
"id": "otherUp",
"label":"Другое"
}]
{
"last_modified": "Последнее обновление: 2024-08-21 UTC.",
"state": ""
}