Layout Editor — visual na editor ng XML layout sa Android Studio na nagbibigay-daan sa paggawa ng mga interface ng Android application nang hindi nagsusulat ng code nang manu-mano. Tatalakayin natin kung ano ito, kung paano gamitin ang ConstraintLayout at LinearLayout, gamitin ang palette ng mga component at i-configure ang mga attribute sa pamamagitan ng Properties Panel.
Mga Pangunahing Punto
Layout Editor — ang tool na nakapaloob sa Android Studio para sa visual na pagdisenyo ng mga user interface ng Android application. Binuksan ito sa pamamagitan ng double click sa XML layout file sa folder na res/layout/ at naa-access sa pamamagitan ng ibabang panel para sa paglipat sa pagitan ng mga tab na Code, Design at Split. Maaaring i-drag ng developer ang mga component mula sa palette papunta sa canvas, i-configure ang kanilang mga property at obserbahan ang mga pagbabago sa real time.
Sinusuportahan ng tool ang dalawang mode ng pagtingin: Design (visual canvas na may aktwal na pagpapakita ng mga widget) at Blueprint (schematic na representasyon na may constraints at hangganan). Ipinapakita ng Split mode ang XML code at visual canvas nang sabay. Ang paglipat sa pagitan ng mga ito ay ginagawa sa pamamagitan ng mga button sa kaliwang sulok sa itaas ng editor.
Ang Layout Editor ay awtomatikong gumagawa ng XML code para sa bawat aksyon ng user: pagdaragdag ng elemento, pagsasaayos ng margin, paggawa ng constraint. Ito ay nagpapahintulot sa developer na huwag tandaan ang dose-dosenang XML attribute at tumuon sa visual na resulta. Ang ginawang code ay palaging maaaring i-edit nang manu-mano sa tab na Code.
| Mode | Paglalarawan | Shortcut Key |
|---|---|---|
| Design | Visual canvas na may mga totoong component | Shift + D |
| Blueprint | Schema na may constraints at hangganan | Shift + B |
| Split | XML code at canvas nang sabay | Shift + S |
Ang interface ng Layout Editor ay nahahati sa apat na zone: Palette (palette ng component), Component Tree (punong component), Design Surface (canvas para sa pagdisenyo) at Properties Panel (panel ng property). Ang Palette ay naglalaman ng lahat ng available na widget ng Android SDK, na pinangkat ayon sa kategorya: Widgets, Text, Buttons, Containers at iba pa. Ipinapakita ng Component Tree ang hierarchy ng layout sa anyo ng puno, na nagpapahintulot sa pag-drag ng mga elemento sa pagitan ng mga lalagyan.
Design Surface — ang sentral na bahagi ng editor kung saan ipinapakita ang layout. Sa canvas, maaaring pumili ng mga elemento, ilipat ang mga ito, baguhin ang laki at gumawa ng constraints. Sa ibabang bahagi ng canvas ay may switch ng device at oryentasyon para sa preview ng layout sa iba't ibang screen. Sinusuportahan ng Layout Editor ang preview sa maraming virtual na device na Nexus, Pixel at Samsung.
Properties Panel ay nagpapakita ng mga attribute ng napiling elemento: layout_width, layout_height, margin, padding, gravity at lahat ng partikular na attribute tulad ng textSize para sa TextView. Ang bawat pagbabago sa Properties Panel ay agad na sumasalamin sa canvas at bumubuo ng kaukulang XML code.
Sa kaliwang sulok sa itaas ng editor ay matatagpuan ang mga button ng kontrol: pagpili ng mode ng pagtingin, pag-activate ng awtomatikong pagkonekta ng constraints (Autoconnect), pagpapakita ng constraints bilang mga linya at paglipat sa pagitan ng mga virtual na device. Ang button na «Device for Preview» ay nagpapahintulot sa pagpili ng modelo ng smartphone, tablet o Android TV para sa pagsusuri ng adaptiveness.
ConstraintLayout — ang pangunahing layout na inirerekomenda ng Google para sa lahat ng bagong Android project. Hindi tulad ng nested na LinearLayout, ang ConstraintLayout ay lumilikha ng patag na hierarchy kung saan ang bawat elemento ay nakatali sa magulang, iba pang elemento o mga gabay na linya (guidelines). Binabawasan nito ang lalim ng nesting at pinapabuti ang performance ng rendering.
Ang bawat elemento sa ConstraintLayout ay may mga side constraint: app:layout_constraintStart_toStartOf, app:layout_constraintEnd_toEndOf, app:layout_constraintTop_toTopOf, app:layout_constraintBottom_toBottomOf. Ang mga constraint ay maaaring itali sa magulang (parent) o sa ID ng ibang elemento. Ang pangunahing XML template ay ganito ang hitsura:
Sa halimbawang ito, ang TextView ay naka-center sa lahat ng apat na gilid ng magulang. Ang laki na 0dp (match_constraint) ay nangangahulugan na ang lapad ay umaabot mula sa kaliwa hanggang sa kanang constraint. Ang ganitong paraan ay nagpapahintulot sa paggawa ng adaptive na mga layout na walang nakapirming laki.
Sinusuportahan din ng ConstraintLayout ang Bias — paglipat ng sentro ng elemento. Ang mga attribute na layout_constraintHorizontal_bias at layout_constraintVertical_bias ay tumatanggap ng mga halaga mula 0 hanggang 1, kung saan 0.5 ang sentro, 0 — pagdikit sa simula, 1 — sa dulo. Ang Bias ay nagpapahintulot ng tumpak na pagpoposisyon ng elemento sa pagitan ng dalawang constraint.
Mga karagdagang kakayahan ng ConstraintLayout: Guidelines (mga gabay na linya sa porsyento o dp), Barriers (mga hadlang na pinagsasama ang maraming elemento) at Chains (mga kadena ng elemento na may pamamahagi ng espasyo). Lahat ng elementong ito ay ginagawa nang direkta sa Layout Editor sa pamamagitan ng context menu sa canvas.
LinearLayout — lalagyan na nag-aayos ng mga child element nang sunud-sunod nang pahalang (android:orientation="horizontal") o patayo (android:orientation="vertical"). Ito ang pinakasimpleng layout na mauunawaan, ngunit lumilikha ito ng nested hierarchy sa mga kumplikadong layout, na maaaring magpababa ng performance.
Ang pangunahing attribute ng LinearLayout ay weight (android:layout_weight). Ito ay nagpapahintulot sa pamamahagi ng libreng espasyo sa pagitan ng mga elemento nang proporsyonal ayon sa tinukoy na halaga. Kung ang dalawang button ay binigyan ng weight="1", sila ay sasakop ng pantay na lapad. Ang elementong may weight="2" ay makakakuha ng dobleng espasyo kaysa sa may weight="1". Halimbawa ng XML na may LinearLayout:
Sa halimbawang ito, ang EditText ay tumatanggap ng layout_weight="1" at sumasakop sa lahat ng libreng espasyo sa pagitan ng labelName at btnSubmit. Ang layout_width="0dp" ay nagpapahiwatig na ang lapad ng EditText ay ganap na natutukoy ng weight. Kung walang weight, kailangan naming magtakda ng nakapirming lapad, na hindi umaangkop sa iba't ibang screen.
Mahahalagang katangian ng LinearLayout: android:gravity ay kumokontrol sa pagkakahanay ng nilalaman sa loob ng lalagyan, at android:layout_gravity ay kumokontrol sa pagkakahanay ng lalagyan mismo sa loob ng magulang. Ang LinearLayout na may nested na LinearLayout ay karaniwang sanhi ng malalim na nesting, kaya inirerekomenda ng Google na palitan ang mga ganitong konstruksyon ng ConstraintLayout.
Ang bawat Android layout ay isang XML file sa folder na res/layout/. Ang Layout Editor ay awtomatikong gumagawa ng file na ito, ngunit ang pag-unawa sa istraktura nito ay kinakailangan para sa manu-manong pag-optimize. Ang root element ay tumutukoy sa uri ng lalagyan (ConstraintLayout, LinearLayout, FrameLayout), kung saan matatagpuan ang mga child widget.
Ang pangunahing XML template na may ConstraintLayout ay naglalaman ng deklarasyon ng mga namespace na xmlns:android at xmlns:app. Ang namespace na app ay ginagamit para sa mga attribute ng ConstraintLayout library, tulad ng layout_constraintStart_toStartOf. Ang bawat elemento ay inirerekomendang bigyan ng android:id para sa mga sanggunian mula sa iba pang elemento at mula sa code ng Activity o Fragment.
Halimbawa ng fragment ng layout na may ilang elemento at constraints:
Sa layout na ito, ang ImageView ay nakatali sa itaas ng magulang at naka-center nang pahalang. Ang TextView ay nakatali sa ibabang hangganan ng ImageView (Top_toBottomOf). Ang Button ay matatagpuan sa ilalim ng TextView. Ang chain na ito ng mga constraint ay lumilikha ng sunud-sunod na istraktura nang walang nested na LinearLayout.
Ang Layout Editor ay nagpapahintulot ng paglipat sa pagitan ng visual at tekstuwal na representasyon sa pamamagitan ng mga tab na Design / Code / Split. Sa Split mode, ang mga pagbabago sa XML ay agad na sumasalamin sa canvas at vice versa. Ito ay lalong maginhawa para sa fine-tuning ng mga attribute na walang visual na kontrol sa canvas.
Palette — kaliwang panel ng Layout Editor na naglalaman ng lahat ng available na UI component: TextView, Button, ImageView, EditText, ProgressBar, RecyclerView at iba pa. Ang mga component ay pinangkat ayon sa kategorya: Widgets, Text, Buttons, Containers, Transitions, Advanced. Upang magdagdag ng component sa canvas, sapat na i-drag ito mula sa palette papunta sa Design Surface.
Properties Panel (kanang panel) ay nagpapakita ng lahat ng attribute ng napiling elemento. Ang panel ay nahahati sa mga seksyon: Id (identifier), Layout (mga sukat at margin), Transform (pag-ikot at scale), Text (nilalaman ng TextView), Padding and Margin. Para sa bawat attribute ay may drop-down menu na may mga opsyon: wrap_content, match_parent, match_constraint (0dp).
Natatanging katangian ng Properties Panel — visual na editor ng mga distansya (padding at margin) na may graphic na pagpapakita. Sa pamamagitan ng pag-click sa numero sa tabi ng kaukulang arrow, maaaring baguhin ang distansya gamit ang slider. Awtomatikong ni-normalize ng Layout Editor ang mga distansya: kung pareho ang lahat ng apat na distansya, ginagamit ang attribute na android:layout_margin, kung hindi man — indibidwal na android:layout_marginStart, android:layout_marginTop at iba pa.
Para sa pag-edit ng mga attribute ng Constraint sa Properties Panel ay may espesyal na seksyon na Constraints. Dito ipinapakita ang lahat ng pagkakabind ng elemento: sa aling gilid ng magulang o ibang elemento nakatali ang bawat hangganan. Maaaring baguhin ang uri ng pagkakabind, magdagdag o magtanggal ng constraint. Ang pagtanggal ng constraint ay maaari ring gawin sa pamamagitan ng pag-click sa kaukulang linya sa canvas sa Blueprint mode.
| Kategorya | Mga Component | Halimbawang Attribute |
|---|---|---|
| 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 |
Ang adaptive na layout ay isang layout na wastong nagpapakita sa iba't ibang laki ng screen: mula sa mga compact na telepono (320dp) hanggang sa malalaking tablet (600dp+) at mga foldable device. Ang Layout Editor ay nagbibigay ng ilang tool para sa pagsusuri at paggawa ng mga adaptive na interface.
Unang tool — Device for Preview sa toolbar. Ang drop-down list ay naglalaman ng mga sikat na device: Pixel 6, Pixel 9, Samsung Galaxy S25, Nexus 7, Nexus 9, Pixel C at iba pa. Maaaring magdagdag ng custom na device na may arbitrary na laki ng screen at pixel density (dpi). Ang paglipat sa pagitan ng mga device ay tumatagal ng isang segundo at nagpapakita kung paano ang hitsura ng layout sa bawat screen.
Pangalawang tool — mga qualifier ng laki (qualifiers) para sa paggawa ng mga alternatibong layout. Sa Layout Editor, maaaring gumawa ng maraming bersyon ng parehong XML file para sa iba't ibang laki ng screen, oryentasyon o density. Halimbawa, ang file na activity_main.xml para sa telepono at activity_main-sw600dp.xml para sa tablet. Awtomatikong nagpapakita ang Layout Editor ng preview para sa aktibong qualifier.
Pangatlong paraan — ConstraintLayout na may Guidelines sa porsyento. Ang mga gabay na linya na may attribute na app:layout_constraintGuide_percent ay nagpapahintulot sa pagtali ng mga elemento sa mga posisyong porsyento. Halimbawa, ang guideline na 50% ay naghahati ng screen sa kalahati anuman ang laki ng device. Ito ang pinaka-flexible na paraan ng paggawa ng adaptive na mga layout nang hindi nadodoble ang mga XML file.
Ipinapakita rin ng Layout Editor ang mang babala tungkol sa mga problema sa adaptiveness: mga dilaw na tatsulok sa mga elementong may nakapirming lapad, masyadong malalaking larawan o hindi optimal na nesting. Maaaring i-click ng developer ang babala at makatanggap ng rekomendasyon para sa pag-aayos.
Ang pag-optimize ng layout ay direktang nakakaapekto sa bilis ng rendering at kinis ng paggana ng application. Ang Layout Editor ay tumutulong sa pagtuklas ng mga problema sa pamamagitan ng built-in na Layout Inspector at mga babala sa panel ng Problems. Mga pangunahing patakaran ng pag-optimize: pag-minimize ng nesting, paggamit ng ConstraintLayout sa halip na nested na LinearLayout, tamang pagpili ng mga attribute ng laki.
Lalim ng nesting — pangunahing kaaway ng performance. Ang bawat nested na lalagyan ay nagpapataas ng oras ng pagsukat at pagguhit. Ang tool na Hierarchy View sa Android Studio ay nagpapakita ng puno ng layout. Kung ang lalim ay lumampas sa 5–6 na antas, ang layout ay dapat na restructuring. Ang ConstraintLayout ay lumulutas ng problemang ito sa pamamagitan ng pagpapalit ng 3–4 na antas ng nesting ng isang patag na lalagyan.
Mga rekomendasyon para sa pag-optimize ng mga XML layout sa Layout Editor:
Layout Inspector — tool ng Android Studio para sa profiling ng mga layout sa panahon ng pagpapatakbo ng application. Ipinapakita nito ang tunay na hierarchy, oras ng pagsukat at pagguhit ng bawat component. Ang Layout Editor ay isinama sa Layout Inspector: ang double click sa babala ay nagbubukas ng kaukulang problema sa detalyadong ulat.
Mga Madalas Itanong
Layout Editor — visual na editor ng XML layout na nakapaloob sa Android Studio. Ito ay nagpapahintulot sa paggawa ng UI ng mga Android application sa pamamagitan ng pag-drag ng mga component sa canvas, pag-configure ng mga attribute sa pamamagitan ng panel ng property at pagtingin sa resulta sa real time. Ang mga mode na Design, Blueprint at Split ay sumasaklaw sa lahat ng yugto ng pag-develop ng layout.
ConstraintLayout ay inirekomenda ng Google para sa mga bagong project dahil sa patag na hierarchy at flexible na constraints. Ang LinearLayout ay makatwiran lamang para sa mga simpleng linear na seksyon na may 2–3 elemento nang walang nesting. Sa isang layout, maaaring pagsamahin ang parehong paraan, gamit ang ConstraintLayout bilang root container.
Sa Design mode, ilagay ang cursor sa bilog sa gilid ng elemento (para sa ConstraintLayout). Pindutin nang matagal ang kaliwang button ng mouse at i-drag ang linya patungo sa magulang o ibang elemento hanggang lumitaw ang snap. Para sa numerical na pagsasaayos ng margin, gamitin ang Properties Panel, seksyon na Constraints. Ang mga constraint ay awtomatikong nalilikha din kapag naka-on ang Autoconnect.
Ang mga dilaw na babala ay nagpapahiwatig ng mga potensyal na problema: hindi optimal na performance (malalim na nesting, nakapirming laki), kawalan ng content description para sa accessibility, hard-coded na mga string sa halip na mga resources na strings.xml. Ang bawat babala ay naglalaman ng rekomendasyon para sa pag-aayos. Itinatampok din ng Layout Editor ang mga elementong may problema sa pula kung kritikal ang error.
Gamitin ang drop-down list na Device for Preview sa toolbar ng Layout Editor. Pumili ng anumang device mula sa listahan o magdagdag ng custom na device na may arbitrary na laki. Upang suriin ang adaptiveness, gumawa ng mga alternatibong layout na may qualifiers (sw600dp, sw720dp) at lumipat sa pagitan ng mga ito sa pamamagitan ng parehong listahan. Ang Layout Inspector sa tunay na device ay magpapakita ng huling resulta.
Buod
Gagawa kami ng mobile application na turnkey
Gumagawa ang IT Sectr ng mga iOS at Android application para sa mga startup at negosyo mula noong 2017. Magpapayo kami sa iyo at magmumungkahi ng pinakamahusay na solusyon.
Basahin din