Ресурс макету програми визначає архітектуру для візуального інтерфейсу дії (activity), або його компоненту. Рекомендуємо також для прочитання статтю "Перша програма “Привіт, Світ!” на Android".

Розміщення файлу

res/layout/filename.xml

Компільований тип ресурсу

Вказівник ресурсу на об'єкт View (або потомок).

Посилання на ресурси

у Java: R.layout.filename у XML: @[пакет:]макет/ім'я_файлу

Синтаксис

<?xml version="1.0" encoding="utf-8"?>
<ViewGroup xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@[+][пакет:]id/ім'я_ресурсу"
    android:layout_height=["dimension" | "fill_parent" | "wrap_content"]
    android:layout_width=["dimension" | "fill_parent" | "wrap_content"]
    [атрибути специфічні для ViewGroup] >
    <View
        android:id="@[+][пакет:]ідентифікатор/ім'я_ресурсу"
        android:layout_height=["dimension" | "fill_parent" | "wrap_content"]
        android:layout_width=["dimension" | "fill_parent" | "wrap_content"]
        [специфічні атрибути для View] >
        <requestFocus/>
    </View>
    <ViewGroup >
        <View />
    </ViewGroup>
    <include layout="@layout/ресурс_макету"/>
</ViewGroup>
Кореневим елементом можуть бути: ViewGroup, View або елемент <merge>, але повинен бути тільки один кореневий елемент і він повинен містити атрибут xmlns:android з показаним простором імен android.

Елементи

<ViewGroup>

Контейнер, який містить елементи View. Існує велика кількість об'єктів ViewGroup і кожен дозволяє вам вказувати на макети дочірніх елементів різним шляхом. Різні типи об'єктів ViewGroup включають LinearLayout, RelativeLayout i FrameLayout. Атрибути:
  • android:id. Унікальний ідентифікатор ресурсу для елементу, який ви можете використовувати для отримання посилання для елементу ViewGroup вашої програми.
  • android:layout_height. Містить розмір або ключове слово (“fill_parent” або “wrap_content”). Даний елемент обов'язковий.
  • android:layout_width. Містить розмір або ключове слово (“fill_parent” або “wrap_content”). Даний елемент обов'язковий.
Даний елемент може містити більше атрибутів, які підтримуються у базовому класі ViewGroup, і набагато більше підтримується кожною реалізацією потомка ViewGroup.

<View>

Індивідуальний компонент інтерфейсу, зазвичай визначений як “віджет”. Доступні типи об'єктів View включають наступні: TextView, Button, CalendarView, DatePicker, EditText, ListView, ImageView, ImageButton, CheckBox і багато інших. Атрибути:
  • android:id. Ідентифікатор ресурсу. Унікальне ім'я ресурсу для даного елементу, яке ви можете використати для отримання посилання на об'єкт View з коду вашої програми.
  • android:layout_height. Містить розмір або ключове слово (“fill_parent” або “wrap_content”). Даний елемент обов'язковий.
  • android:layout_width. Містить розмір або ключове слово (“fill_parent” або “wrap_content”). Даний елемент обов'язковий.
Так само, як для попереднього елементу, даний підтримує велику кількість атрибутів, які призначені для різних реалізацій потомків класу View (TextView, Button і т.д.).

<requestFocus>

Будь-який елемент, який представляє об'єкт View може включати даний елемент, що дає змогу отримати початковий фокус користувача.

<inlude>

Включає файли макетів у даний файл. Атрибути:
  • layout. Ресурс макету. Даний атрибут обов'язковий. Посилання на ресурс макету.
  • android:id. Ідентифікатор ресурсу. Перезаписує ідентифікатор наданий для кореневого елементу підключеного макету.
  • android:layout_height. Містить розмір або ключове слово (“fill_parent” або “wrap_content”).
  • android:layout_width. Містить розмір або ключове слово (“fill_parent” або “wrap_content”).
Ви також можете включати будь-які інші атрибути у елемент <include>, які підтримуються кореневим елементом у підключеному макеті і які перезапишуть дані атрибути кореневого елементу (для того щоб дані зміни вступили в силу, вам також необхідно перевизначити атрибути layout_height i layout_width).

<merge>

Альтернативний кореневий елемент, який не малюється на ієрархії макету. Його використання як кореневого елементу корисне, коли ви знаєте, що цей макет буде розміщено у інший макет, який вже містить відповідний кореневий елемент. Тобто даний макет буде обов'язково включатись у інший макет.

Значення для атрибуту android:id

Для значення даного атрибуту, вам зазвичай необхідно використовувати наступний синтаксис: “@+ідентифікатор/ім'я”. Символ “+” означає, що це є новий ідентифікатор ресурсу і утиліта aapt створить новий цілочисельний ідентифікатор у класі R.java, якщо він ще не існує. Приклад:
<TextView android:id="@+id/nameTextbox"/>
Ім'я nameTextbox тепер являється ідентифікатором ресурсу, який призначений для даного елементу. Ви можете посилатись на даний TextView за допомогою:
findViewById(R.id.nameTextbox) ;
Даний код повертає об'єкт TextView. Однак, якщо ви вже визначили ідентифікатор ресурсу (і воно ще не використано), тоді ви можете застосувати даний ID до елементу View, виключаючи символ плюс з значення атрибуту android:id.

Значення для android:layout_height i android:layout_width

Значення висоти і ширини можуть бути виражені використовуючи будь-які одиниці розміру, які підтримуються системою Android (px, dp, sp, pt, in, mm) або одним з наступних ключових слів:
  • match_parent: Встановлює розміри, які співпадають з розміром батьківського елементу.
  • fill_parent: Встановлює розміри які співпадають з батьківським елементом.
  • wrap_content: Встановлює необхідні розміри для обгортання контенту даного елементу.

Елементи визначені користувачем

Ви можете створити ваші власні елементи View i 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="fill_parent" 
              android:layout_height="fill_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="Привіт, я кнопка!" />
</LinearLayout>
Даний код програми завантажить макет для об'єкту Activity у методі onCreate():
public void onCreate (Bundle savedInstanceState)
{
    super.onCreate (savedInstanceState) ;
    setContentView (R.layout.main_activity) ;
}
Рекомендуємо також для прочитання статтю "Перша програма “Привіт, Світ!” на Android".