Ресурс розташування

Ресурс розташування визначає архітектуру для UI в Activity або компоненті UI.

РОЗТАШУВАННЯ ФАЙЛУ:
res/layout/filename.xml
Ім’я файлу буде використано як ID ресурсу.
СКОМПІЛЬОВАНИЙ ТИП ДАНИХ РЕСУРСУ:
Вказівник на 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" | "fill_parent" | "wrap_content"]
   
android:layout_width=["dimension" | "fill_parent" | "wrap_content"]
    [
ViewGroup-specific attributes] >
   
<View
       
android:id="@[+][package:]id/resource_name"
       
android:layout_height=["dimension" | "fill_parent" | "wrap_content"]
       
android:layout_width=["dimension" | "fill_parent" | "wrap_content"]
        [
View-specific attributes] >
       
<requestFocus/>
   
</View>
   
<ViewGroup >
       
<View />
   
</ViewGroup>
   
<include layout="@layout/layout_resource"/>
</ViewGroup>

Зауваження: Кореневий елемент може бути або  ViewGroupView або <merge> елемент, але має бути лише один кореневий елемент, і він мусить містити атрибут xmlns:android з простору імен  android.

ЕЛЕМЕНТИ:
<ViewGroup>
Контейнер для інших елементів View. Є багато різних типів об’єктів ViewGroup і кожний дозволяє вам задать розташування довірніх елементів різними шляхами. Різні типи об’єктів ViewGroup включають LinearLayout, RelativeLayout та FrameLayout.

Ви не повинні очікувати, що кожний похідний від ViewGroup буде підтримувати вкладені View. Деякі ViewGroup є реалізаціями класу AdapterView, що визначає свої дочірні тільки від Adapter.

атрибути:

android:id
Resource ID.Унікальне ім’я ресурсу для елементу, котре ви можете застосовувати, щоб отримати посилання на ViewGroup з вашого застосування. Дивіться більше щодо value for android:id нижче.
android:layout_height
Розмірність або ключове словоПотрібне. Висота для групи, як значення розмірності (або ресурс розмірності) або ключове слово ("fill_parent" або "wrap_content"). Дивіться допустимі значення нижче.
android:layout_width
Розмірність або ключове слово. Потрібне. Ширина для групи, як значення розмірності (або ресурс розмірності) або ключове слово ("fill_parent"або "wrap_content"). Дивіться допустимі значення нижче.

Більше атрибутів доступні через базовий клас ViewGroup, та значно більше підтримуються в кожній реалізації ViewGroup. Для посилань на всі доступні атрибути, дивіться на відповідні посилання в документації для класу ViewGroup (наприклад,  атрибути LinearLayout XML).

<View>
Індевідуальний компонент UI, загально відомий як "віджет". Різні типи об’єктів View включають TextView, Button та CheckBox.

атрибути:

android:id
Resource ID. Унікальне ім’я ресурсу для елементу, що ви можете використовувати для отримання посилання на View з вашого застосування. Дивіться більше щодо  значення для android:id нижче.
android:layout_height
Розмірність або ключове слово. Потрібне. Висота елементу, як значення розмірності  (або ресурс розмірності) або ключове слово ("fill_parent"або "wrap_content"). Дивіться  допустимі значення нижче.
android:layout_width
Розмірність або ключове слово. Потрібне. Ширина елементу, як The width for the element, as a dimension value (or dimension resource) або ключове слово ("fill_parent"або "wrap_content"). Дивіться  допустимі значення нижче.

Більше атрибутів підтримуються базовим класом View, та ще більше підтримуються любою реалізацією View. Читайте Розташування для додаткової інформації. Для посилань на допустимі атрибути, дивіться відповідні документи посилань (наприклад, атрибути TextView XML).

<requestFocus>
Кожний елемент, що представляє об’єкт View, може містити цей пустий елемент, що надає свій батьківський початковий фокус на екрані. Ви можете мати тільки один такий елемент в файлі.
<include>
Включає файл розташування в поточне розташування.

атрибути:

layout
Ресурс розташування. Потрібне. Посилання на ресурс розташування.
android:id
Resource ID. Перекриває ID, наданий до кореневого перегляду ві вкладеному розташуванні.
android:layout_height
Розмірність або ключове слово. Overrides the height given to the root view in the included layout. Only effective if android:layout_width is also declared.
android:layout_width
Розмірність або ключове слово. Перекриває ширину. надану до кореневого перегляду в вкллюченому перегляді. Ефективне тільки якщо також декларовано android:layout_height.

Ви можете включити любі інші атрибутидо <include>, що підтримуються кореневим елементом в включеному розташуванні, і вони перекриють такі ж, визначені для кореневого елементу.

Пересторога: Якщо ви бажаєте перекрити атрибути розташування з використанням тегу <include>, ви зобов’язані  перекрити обоє, android:layout_height та  android:layout_width, щоб інші атрибути розташування також набрали чинності.

Інший шлях для включення розташування є застосування  ViewStub. Це легковажний View, що не споживає простір, доки ви його не зреалізуєте, та в цій точці він включатиме файл розташування, визначений в атрибуті android:layout. Для більшої інформації щодо використання ViewStub, прочитайте Завантаження переглядів на замовлення.

<merge>
Альтернативний кореневий елемент, що не малюється в ієрархії розташування. Використання його як кореневого елементу корисне, коли ви знаєте, що це розташування буде розміщено в розташування, що вже містить  потрібний батьківський View, що містить дитину елементу <merge>. Це, окрім іншого, корисно, коли ви плануєте включити це розташування в інший файл розташування з використанням  <include>  та це розташування не потребує іншого контейнера ViewGroup. Для отримання додаткової інформації щодо поєднання розташувань, звертайтесь до  Повторне використання  розташувань за допомогою <include/>.

Значення для android:id

Для значення ID вам загалом треба використовувати цей синтаксис: "@+id/name". Символ , +, вказує на те, що це новий ресурсний ID, та інструмент aapt буде створювати нове ціле значення для ресурсу в класі R.java,  якщо воно ще не існує. Наприклад:

<TextView android:id="@+id/nameTextbox"/>

Ім’я  nameTextbox тепер є ресурсним ID, доданим для цього елементу. Тепер ви можете посилатись на TextView, до якого ID є асоційьованим в Java:

findViewById(R.id.nameTextbox);

Код повертає об’єкт TextView .

Однак, якщо ви вже взначинили  ID ресурсу (та він досі не задіяний), тоді ви можете застосувати цей ID до елементу View, виключаючи символ плюса в значенні android:id.

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

Значення висоти та ширини можуть бути виражені з використанням любої з одиниць виміру, що підтримуються в Android (px, dp, sp, pt, in, mm), або за допомогою наступних  ключоаих слів:

Значення Опис
match_parent Встановлює розмір, що співпадає з таким для батьківського елементу. Додано в API Level 8 як заміщення для fill_parent.
fill_parent Встановлює розмір, що співпадає з таким для батьківського елементу.
wrap_content Встановлює розмір в такий, що тільки необхідний для вмісту цього елелменту.

Власні елементи View

Ви можете створити власний елемент  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="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="Hello, I am a Button" />
</LinearLayout>

Цей код застосування буде завантажувати розташування для Activity в методі onCreate():

public void onCreate(Bundle savedInstanceState) {
   
super.onCreate(savedInstanceState);
    setContentView
(R.layout.main_activity);
}
see also: