Android layout

Що таке Layout

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

Компонування (також використовуються терміни розмітка або макет) зберігається у вигляді XML-файла в папці / res / layout. Це зроблено для того, щоб відокремити код від дизайну, як це прийнято в багатьох технологіях (HTML і CSS). Крім основної компонування для всього екрану, існують дочірні елементи компоновки для групи елементів. По суті, компоновка - це якийсь візуальний шаблон для призначеного для користувача інтерфейсу вашої програми, який дозволяє управляти елементами управління, їх властивостями і розташуванням. У своїй практиці вам доведеться познайомитися з усіма способами розміщення. Тому тут ми розглянемо тільки базову частину теорії, щоб ви зрозуміли саму сутність розмітки. Крім того, розмітку можна створювати програмним способом, який буде описаний в кінці статті. Якщо ви буде звертатися до елементів управління через Java-код, то необхідно присвоювати елементам унікальний ідентифікатор через атрибут android: id. Сам ідентифікатор призначається через вираз @ + id / your_value. Після цього ви можете звертатися до елементу через код за допомогою методу findViewById (R.id.your_value).

Створюючи призначений для користувача інтерфейс в XML-файлі, ви можете відокремити подання додатка від програмного коду. Ви можете змінювати призначений для користувача інтерфейс в файлі розмітки без необхідності зміни вашого програмного коду. Наприклад, ви можете створювати XML-розмітки для різних орієнтацій екрану мобільного пристрою (portrait, landscape), розмірів екрану і мов інтерфейсу.

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

види розміток

Існує кілька стандартних типів розміток:

Всі описувані розмітки є підкласами ViewGroup і успадковують властивості, певні в класі View.

комбінування

Компонування поводиться як елемент управління і ііх можна групувати. Розташування елементів управління може бути вкладеним. Наприклад, ви можете використовувати RelativeLayout в LinearLayout і так далі. Але будьте обережні: занадто велика вкладеність елементів управління викликає проблеми з продуктивністю.

Можна впровадити готовий файл компонування в існуючу розмітку за допомогою тега :

Програмний спосіб створення розмітки

Для підключення створеної розмітки використовується код в методі onCreate ():

Природно, ви можете придумати і своє ім'я для файлу, а також в додатках з декількома екранами у вас буде кілька файлів розмітки: game.xml. activity_settings.xml. fragment_about.xml і т.д.

У більшості випадків ви будете використовувати XML-спосіб завдання розмітки і підключати його способом, зазначеним вище. Але, іноді бувають ситуації, коли вам знадобиться програмний спосіб (або доведеться розбиратися з чужим кодом). Вам доступні для роботи класи android.widget.LinearLayout. LinearLayout.LayoutParams. а також Android.view.ViewGroup.LayoutParams. ViewGroup.MarginLayoutParams. Замість стандартного підключення ресурсу розмітки через метод setContentView (). ви будуєте вміст розмітки в Java, а потім вже в самому кінці передаєте методу setContentView () батьківський об'єкт макета:

Число макетів постійно змінюється. Наприклад, недавно з'явилися новий види CoordinatorLayout і ConstraintLayout. Крім стандартних елементів розмітки існують і сторонні розробки.

додаткове читання

FlexboxLayout