Layout Editor — визуелни уређивач XML макета у Android Studio, који омогућава креирање интерфејса Android апликација без ручног писања кода. Размотрићемо шта је то, како радити са ConstraintLayout и LinearLayout, користити палету компоненти и подешавати атрибуте преко Properties Panel.
Главно
Layout Editor — уграђени алат у Android Studio за визуелно пројектовање корисничких интерфејса Android апликација. Отвара се двоструким кликом на XML датотеку макета у фолдеру res/layout/ и доступан је кроз доњи панел за пребацивање између картица Code, Design и Split. Програмер може да превлачи компоненте из палете на платно, подешава њихова својства и посматра промене у реалном времену.
Алат подржава два режима приказа: Design (визуелно платно са стварним приказом виџета) и Blueprint (шематски приказ са констрејнтима и границама). Split режим приказује XML код и визуелно платно истовремено. Пребацивање између њих врши се дугмићима у горњем левом углу уређивача.
Layout Editor аутоматски генерише XML код за сваку радњу корисника: додавање елемента, подешавање маргина, креирање констрејнта. Ово омогућава програмеру да не памти десетине XML атрибута и да се фокусира на визуелни резултат. Генерисани код се увек може ручно уредити на картици Code.
| Режим | Опис | Пречица |
|---|---|---|
| Design | Визуелно платно са стварним компонентама | Shift + D |
| Blueprint | Шема са констрејнтима и границама | Shift + B |
| Split | XML код и платно истовремено | Shift + S |
Интерфејс Layout Editor-а подељен је на четири зоне: Palette (палета компоненти), Component Tree (стабло компоненти), Design Surface (платно за пројектовање) и Properties Panel (панел својстава). Palette садржи све доступне виџете Android SDK-а, груписане по категоријама: Widgets, Text, Buttons, Containers и друге. Component Tree приказује хијерархију макета у облику стабла, омогућавајући превлачење елемената између контејнера.
Design Surface — централни део уређивача где се приказује макет. На платну се могу истицати елементи, померати их, мењати величине и креирати констрејнти. У доњем делу платна доступан је прекидач уређаја и оријентације за преглед макета на различитим екранима. Layout Editor подржава преглед на многим виртуелним уређајима Nexus, Pixel и Samsung.
Properties Panel приказује атрибуте изабраног елемента: layout_width, layout_height, маргине, унутрашње маргине (padding), гравитацију и све специфичне атрибуте попут textSize за TextView. Свака промена у Properties Panel-у тренутно се одражава на платну и генерише одговарајући XML код.
У горњем левом углу уређивача налазе се дугмићи за управљање: избор режима приказа, укључивање аутоматског повезивања констрејнта (Autoconnect), приказ констрејнта у виду линија и пребацивање између виртуелних уређаја. Дугме «Device for Preview» омогућава избор модела паметног телефона, таблета или Android TV-а за проверу адаптивности.
ConstraintLayout — основни layout, препоручен од Google-а за све нове Android пројекте. За разлику од угнежђених LinearLayout-а, ConstraintLayout ствара равну хијерархију, где је сваки елемент везан за родитеља, друге елементе или водеће линије (guidelines). Ово смањује дубину угнежђења и повећава перформансе рендеровања.
Сваки елемент у ConstraintLayout-у има бочне констрејнте: app:layout_constraintStart_toStartOf, app:layout_constraintEnd_toEndOf, app:layout_constraintTop_toTopOf, app:layout_constraintBottom_toBottomOf. Констрејнти могу бити везани за родитеља (parent) или за ID другог елемента. Основни XML шаблон изгледа овако:
У овом примеру, TextView је центриран по све четири стране родитеља. Величина 0dp (match_constraint) значи да се ширина протеже од левог до десног констрејнта. Овакав приступ омогућава креирање адаптивних макета без фиксних величина.
ConstraintLayout такође подржава Bias — померање центра елемента. Атрибути layout_constraintHorizontal_bias и layout_constraintVertical_bias примају вредности од 0 до 1, где је 0.5 центар, 0 — прибијање на почетак, 1 — на крај. Bias омогућава прецизно позиционирање елемента између два констрејнта.
Додатне могућности ConstraintLayout-а: Guidelines (водеће линије у процентима или dp), Barriers (баријере које обједињују више елемената) и Chains (ланци елемената са расподелом простора). Сви ови елементи креирају се директно у Layout Editor-у преко контекстног менија на платну.
LinearLayout — контејнер који распоређује елементе потомке узастопно хоризонтално (android:orientation="horizontal") или вертикално (android:orientation="vertical"). Ово је најједноставнији layout за разумевање, али ствара угнежђену хијерархију код сложених макета, што може смањити перформансе.
Кључни атрибут LinearLayout-а је weight (android:layout_weight). Он омогућава расподелу слободног простора између елемената пропорционално наведеним вредностима. Ако се два дугмета подесе са weight="1", заузеће једнаку ширину. Елемент са weight="2" добиће двоструко више простора од елемента са weight="1". Пример XML-а са LinearLayout:
У овом примеру, EditText добија layout_weight="1" и заузима сав слободан простор између labelName и btnSubmit. layout_width="0dp" указује да је ширина EditText-а у потпуности одређена weight-ом. Без weight-а морали бисмо да поставимо фиксну ширину, што се не прилагођава различитим екранима.
Важне карактеристике LinearLayout-а: android:gravity управља поравнањем садржаја унутар контејнера, а android:layout_gravity — поравнањем самог контејнера унутар родитеља. LinearLayout са угнежђеним LinearLayout-има чест је узрок дубоког угнежђења, па Google препоручује замену оваквих конструкција ConstraintLayout-ом.
Сваки Android макет је XML датотека у фолдеру res/layout/. Layout Editor генерише ову датотеку аутоматски, али разумевање њене структуре неопходно је за ручну оптимизацију. Основни елемент одређује тип контејнера (ConstraintLayout, LinearLayout, FrameLayout), унутар којег се налазе виџети потомци.
Основни XML шаблон са ConstraintLayout-ом садржи декларацију простора имена xmlns:android и xmlns:app. Простор имена app користи се за атрибуте библиотеке ConstraintLayout, као што је layout_constraintStart_toStartOf. Сваком елементу препоручује се додељивање android:id за референце из других елемената и из кода Activity или Fragment-а.
Пример фрагмента макета са неколико елемената и констрејнтима:
У овом макету, ImageView је везан за врх родитеља и центриран хоризонтално. TextView је везан за доњу ивицу ImageView-а (Top_toBottomOf). Button се налази испод TextView-а. Овај ланац констрејнта ствара секвенцијалну структуру без угнежђених LinearLayout-а.
Layout Editor омогућава пребацивање између визуелног и текстуалног приказа преко картица Design / Code / Split. У Split режиму, промене у XML-у тренутно се одражавају на платну и обрнуто. Ово је посебно згодно за фино подешавање атрибута који немају визуелну контролу на платну.
Palette — леви панел Layout Editor-а који садржи све доступне UI компоненте: TextView, Button, ImageView, EditText, ProgressBar, RecyclerView и друге. Компоненте су груписане по категоријама: Widgets, Text, Buttons, Containers, Transitions, Advanced. Да бисте додали компоненту на платно, довољно је да је превучете из палете на Design Surface.
Properties Panel (десни панел) приказује све атрибуте изабраног елемента. Панел је подељен на секције: Id (идентификатор), Layout (величине и маргине), Transform (ротација и размера), Text (садржај TextView-а), Padding and Margin. За сваки атрибут доступан је падајући мени са опцијама: wrap_content, match_parent, match_constraint (0dp).
Посебност Properties Panel-а је визуелни уређивач размака (padding и margin) са графичким приказом. Кликом на број поред одговарајуће стрелице, можете променити размак помоћу клизача. Layout Editor аутоматски нормализује размаке: ако су сва четири размака иста, користи се атрибут android:layout_margin, у супротном — појединачни android:layout_marginStart, android:layout_marginTop итд.
За уређивање атрибута констрејнта у Properties Panel-у постоји посебна секција Constraints. Овде се приказују све везе елемента: на коју страну родитеља или другог елемента је везана свака ивица. Може се променити тип везе, додати или уклонити констрејнт. Брисање констрејнта може се извршити и кликом на одговарајућу линију на платну у Blueprint режиму.
| Категорија | Компоненте | Пример атрибута |
|---|---|---|
| Widgets | TextView, ImageView, ProgressBar | textSize, src, max |
| Text | EditText, AutoCompleteTextView | hint, inputType, imeOptions |
| Buttons | Button, ImageButton, ToggleButton | text, onClick, backgroundTint |
| Containers | CardView, ScrollView, RecyclerView | cardCornerRadius, clipToPadding |
| Advanced | WebView, MapView, VideoView | loadUrl, zOrderOnTop |
Адаптивни макет је макет који се правилно приказује на различитим величинама екрана: од компактних телефона (320dp) до великих таблета (600dp+) и склопивих уређаја. Layout Editor пружа неколико алата за проверу и креирање адаптивних интерфејса.
Први алат — Device for Preview на траци са алаткама. Падајућа листа садржи популарне уређаје: Pixel 6, Pixel 9, Samsung Galaxy S25, Nexus 7, Nexus 9, Pixel C и друге. Може се додати прилагођени уређај са произвољним величинама екрана и густином пиксела (dpi). Пребацивање између уређаја траје једну секунду и показује како макет изгледа на сваком екрану.
Други алат — квалификатори величине (qualifiers) за креирање алтернативних макета. У Layout Editor-у можете креирати више верзија исте XML датотеке за различите величине екрана, оријентацију или густину. На пример, датотека activity_main.xml за телефон и activity_main-sw600dp.xml за таблет. Layout Editor аутоматски приказује преглед за активни квалификатор.
Трећи приступ — ConstraintLayout са Guidelines у процентима. Водеће линије са атрибутом app:layout_constraintGuide_percent омогућавају везивање елемената за процентуалне позиције. На пример, guideline на 50% дели екран на пола без обзира на величину уређаја. Ово је најфлексибилнији начин креирања адаптивних макета без дуплирања XML датотека.
Layout Editor такође приказује упозорења о проблемима адаптивности: жути троуглови на елементима са фиксном ширином, превеликим сликама или неоптималном угнежђењу. Програмер може кликнути на упозорење и добити препоруку за исправку.
Оптимизација макета директно утиче на брзину рендеровања и глаткоћу рада апликације. Layout Editor помаже у откривању проблема кроз уграђени Layout Inspector и упозорења у панелу Problems. Основна правила оптимизације: минимизација угнежђења, коришћење ConstraintLayout-а уместо угнежђених LinearLayout-а, правилан избор атрибута величина.
Дубина угнежђења — главни непријатељ перформанси. Сваки угнежђени контејнер повећава време мерења и цртања. Алат Hierarchy View у Android Studio приказује стабло макета. Ако дубина прелази 5–6 нивоа, макет треба реструктурирати. ConstraintLayout решава овај проблем замењујући 3–4 нивоа угнежђења једним равним контејнером.
Препоруке за оптимизацију XML макета у Layout Editor-у:
Layout Inspector — алат Android Studio за профилисање макета током извршавања апликације. Приказује стварну хијерархију, време мерења и цртања сваке компоненте. Layout Editor је интегрисан са Layout Inspector-ом: двоструки клик на упозорење отвара одговарајући проблем у детаљном извештају.
Често постављана питања
Layout Editor — визуелни уређивач XML макета уграђен у Android Studio. Омогућава креирање UI Android апликација превлачењем компоненти на платно, подешавањем атрибута преко панела својстава и прегледом резултата у реалном времену. Режими Design, Blueprint и Split покривају све фазе развоја макета.
ConstraintLayout препоручује Google за нове пројекте због равне хијерархије и флексибилних констрејнта. LinearLayout је оправдан само за једноставне линеарне секције са 2–3 елемента без угнежђења. У једном макету могу се комбиновати оба приступа, користећи ConstraintLayout као основни контејнер.
У Design режиму поставите курсор на круг на ивици елемента (за ConstraintLayout). Држите леви тастер миша и превуците линију ка родитељу или другом елементу док се не појави закачка (snap). За нумеричко подешавање маргина користите Properties Panel, секцију Constraints. Констрејнти се такође аутоматски креирају када је Autoconnect укључен.
Жута упозорења указују на потенцијалне проблеме: неоптималне перформансе (дубоко угнежђење, фиксне величине), недостатак content description-а за accessibility, тврдо кодиране низове уместо ресурса strings.xml. Свако упозорење садржи препоруку за исправку. Layout Editor такође истиче елементе са проблемима црвеном бојом ако је грешка критична.
Користите падајућу листу Device for Preview на траци са алаткама Layout Editor-а. Изаберите било који уређај са листе или додајте прилагођени са произвољним величинама. За проверу адаптивности креирајте алтернативне макете са квалификаторима (sw600dp, sw720dp) и пребацујте се између њих преко исте листе. Layout Inspector на стварном уређају показаће коначни резултат.
Закључци
Развићемо мобилну апликацију под кључ
IT Sectr креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.
Прочитајте такође