Ресурс макета определяет архитектуру пользовательского интерфейса в 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
, как показано в предыдущем примере синтаксиса.- элементы:
Значение для 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); }
- см. также: