View Hierarchy v Android Studio je výkonný nástroj pro inspekci hierarchie View, který umožňuje vývojářům analyzovat strukturu uživatelského rozhraní aplikace v reálném čase. Podle oficiální dokumentace Android Developers (2025), Layout Inspector poskytuje podrobné informace o každé komponentě layoutu, včetně jejích rozměrů, okrajů a atributů. Nástroj je nepostradatelný při ladění UI, hledání překrývajících se prvků a optimalizaci výkonu vykreslování.
Hlavní body
View Hierarchy je hierarchická struktura všech View komponent, které tvoří uživatelské rozhraní Android aplikace. Každý prvek rozhraní, ať už je to tlačítko, textové pole, obrázek nebo kontejner, je v této hierarchii reprezentován jako uzel stromu a vztah rodič-dítě odráží vnoření layout komponent.
V Androidu je každá obrazovka postavena z ViewGroup (kontejnerů) a View (widgetů). ViewGroup obsahuje dětské View a spravuje jejich umístění. Například LinearLayout řadí prvky do řady, zatímco ConstraintLayout podle omezení. View Hierarchy vizualizuje tuto strukturu ve formě stromu: kořen je hlavní ViewGroup (např. content), listy jsou koncové widgety jako TextView nebo ImageView.
Když Android vykresluje obrazovku, prochází stromem View shora dolů: rodičovský ViewGroup měří a umisťuje dětské prvky, poté se každé dítě vykreslí na Canvas. Pořadí procházení určuje pořadí Z vykreslování — prvky přidané později se vykreslují přes předchozí. Porozumění tomuto principu je klíčové pro ladění překrývajících se prvků a nesprávného umístění.
<!-- Příklad hierarchie View v layoutu -->
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/titleText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World" />
<Button
android:id="@+id/submitBtn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Submit" />
</androidx.constraintlayout.widget.ConstraintLayout>
Layout Inspector je hlavní nástroj Android Studio pro práci s View Hierarchy. Vytvoří snímek aktuálního stavu UI běžící aplikace a zobrazí celý strom View s možností interaktivního prohlížení. Pro použití je potřeba zařízení nebo emulátor s API Level 14 a vyšším.
Při spuštění se Layout Inspector připojí k procesu aplikace a požádá o výpis aktuálního stavu WindowManager. Výsledek zahrnuje nejen strom View, ale také snímek obrazovky s přiloženými hranicemi prvků. To umožňuje doslova vidět, které View jsou vykresleny a kde se nacházejí, porovnáním vizuální reprezentace s kódem layoutu.
Layout Inspector podporuje režim Live Update, ve kterém se snímky automaticky aktualizují při změně stavu UI — například po stisknutí tlačítka nebo přechodu na jinou obrazovku. To je zvláště užitečné při ladění animací a dynamických změn rozhraní, když je třeba sledovat, jak se strom View mění v reakci na akce uživatele.
// Příklad dynamického přidání View v runtime
val dynamicView = TextView(this).apply {
id = View.generateViewId()
layoutParams = ViewGroup.LayoutParams(
ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT
)
text = "Dynamic View"
}
binding.root.addView(dynamicView)
View Hierarchy v Android Studio poskytuje sadu funkcí pro hlubokou analýzu uživatelského rozhraní. Nástroj přesahuje pouhé prohlížení stromu a zahrnuje prostředky pro inspekci vlastností, 3D analýzu a filtrování komponent.
Při výběru libovolného View ve stromu se otevře panel Properties s úplným seznamem atributů: layout_width, layout_height, padding, margin, visibility, elevation, background a všech vlastních atributů z motivu aplikace. Hodnoty se zobrazují jak v pixelech, tak v dp, což usnadňuje porovnání s kódem layoutu.
| Vlastnost | Popis | Příklad hodnoty |
|---|---|---|
| mLeft, mTop | Souřadnice levého horního rohu vůči rodiči | 24px (12dp) |
| mMeasuredWidth | Naměřená šířka po fázi measure | 192px (96dp) |
| getVisibility | Viditelnost prvku: visible, invisible nebo gone | visible |
| getAlpha | Průhlednost prvku v rozsahu 0–1 | 1.0 |
| getElevation | Výška prvku pro zobrazení stínu | 4dp |
Layout Inspector nabízí trojrozměrné zobrazení hierarchie View, kde je každá komponenta zobrazena jako vrstva s danou výškou (elevation). To umožňuje vizuálně vidět, které prvky se překrývají a jaké pořadí Z se používá při vykreslování. Režim je zvláště užitečný při práci s CardView, FloatingActionButton a dalšími komponentami s elevation.
Pro velké obrazovky s desítkami View je k dispozici vyhledávání podle id a textu komponenty. Strom lze filtrovat podle typu View (například zobrazit pouze TextView) nebo skrýt kontejnery a ponechat pouze koncové prvky. Filtrování urychluje navigaci ve složitých layout souborech s vícenásobným vnořením. Při práci s RecyclerView umožňuje filtrování izolovat konkrétní prvek seznamu pro detailní analýzu jeho layout parametrů a stavu.
View Hierarchy zobrazuje nejen vlastnosti layoutu, ale také související zdroje: background drawable, zdroj obrázku, barvy z motivu. Pokud View používá VectorDrawable, lze vidět přesnou cestu ke zdroji. To pomáhá najít problémy s nesprávným uvedením drawable — například když tmavý motiv používá světlou ikonu nebo když odkaz na zdroj ukazuje na neexistující soubor.
Ladění UI pomocí View Hierarchy řeší konkrétní praktické úkoly, se kterými se setkává každý Android vývojář. Nástroj umožňuje nejen vidět strom, ale najít a odstranit problémy výkonu a zobrazení.
Když prvek na obrazovce není tam, kde se očekává, stačí otevřít Layout Inspector a zkontrolovat jeho souřadnice mLeft a mTop. Často problém spočívá v nesprávných marginech nebo omezeních. Například TextView se může ocitnout mimo obrazovku kvůli zápornému marginu nebo nesprávně nakonfigurovaným omezením v ConstraintLayout. View Hierarchy ukáže přesnou polohu a skutečné rozměry.
Hluboce vnořené layout kontejnery negativně ovlivňují výkon vykreslování, protože Android tráví více času na fázích measure a layout. View Hierarchy vizuálně ukazuje úroveň vnoření každého prvku. Doporučená hloubka je maximálně 10 úrovní a překročení 15 úrovní je považováno za vážný problém vyžadující refaktorizaci pomocí ConstraintLayout nebo Merge.
V panelu vlastností lze vidět skutečný počet průchodů measure a layout pro každý View. Nadměrný počet překreslení ukazuje na neefektivní strukturu layoutu. Nástroje pro ladění GPU Overdraw spolu s View Hierarchy poskytují úplný obraz: které View se kreslí přes jiné zbytečně, vytvářejíce nadměrnou zátěž na GPU. Analýza GPU Overdraw spolu s daty Layout Inspector poskytuje úplný obraz neefektivního kreslení na celé obrazovce.
// Optimalizace hloubky pomocí Merge
// Místo vnořených LinearLayout použijte Merge
<merge xmlns:android="http://schemas.android.com/apk/res/android">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Optimalizovaný obsah" />
</merge>
Pro efektivní použití View Hierarchy je třeba vědět, jak spustit nástroj, jak navigovat ve stromu a jak exportovat získaná data pro analýzu nebo hlášení.
Layout Inspector se spouští z menu Tools → Layout Inspector v Android Studio. Před spuštěním musí aplikace běžet na připojeném zařízení nebo emulátoru. Po výběru procesu se objeví okno se třemi panely: snímek obrazovky, strom View a panel vlastností vybrané komponenty. Pro emulátor s API 29 a vyšším je k dispozici režim Live Update.
Strom View je zobrazen v levém panelu jako hierarchický seznam. Lze rozbalovat a sbalovat kontejnery a také kliknout přímo na snímek obrazovky — odpovídající komponenta se automaticky vybere ve stromu. Toto je obousměrná synchronizace: výběr ve stromu zvýrazní prvek na snímku obrazovky a naopak. Pro rychlé vyhledávání použijte pole Filter.
Výsledky inspekce lze uložit ve formátu .li (soubor Layout Inspector) pro pozdější prohlížení nebo předání kolegům. Soubor obsahuje úplné informace o stromu View, snímku obrazovky a všech vlastnostech komponent. Pro export použijte tlačítko Export v panelu nástrojů Layout Inspector. Exportovaná data lze otevřít na jiném počítači s Android Studio pro společnou analýzu UI problémů.
Často kladené otázky
Layout Inspector funguje na zařízeních s API Level 14 (Android 4.0) a vyšším. Pro režim Live Update je však vyžadován API Level 29 (Android 10) a knihovna Layout Inspector v gradle závislostech.
Některé View mohou být skryty kvůli příznaku Hardware Acceleration nebo optimalizacím vykreslování. Zkuste vypnout hardwarovou akceleraci pro okno v manifestu nebo zapnout Developer Options na zařízení. SurfaceView a TextureView se také nezobrazují zcela.
Android emulátor plně podporuje Layout Inspector, včetně Live Update na API 29+. Ujistěte se, že emulátor běží s podporou Google Play Services. Pro emulátory bez Play Store použijte Debug sestavení aplikace.
Layout Inspector je nástroj pouze pro čtení pro prohlížení a analýzu. Přímá úprava vlastností není podporována. Pro změnu hodnot je třeba upravit soubor layoutu nebo kód a restartovat aplikaci. Existují knihovny třetích stran jako Hyperion pro runtime změny.
View Hierarchy je konceptuální strom komponent, zatímco Layout Inspector je nástroj Android Studio pro jeho vizualizaci a analýzu. V běžné mluvě se tyto termíny často používají jako synonyma, ale technicky View Hierarchy odkazuje na datovou strukturu, zatímco Layout Inspector na nástroj.
Shrnutí
Vyvineme mobilní aplikaci na klíč
IT Sectr vytváří aplikace pro iOS a Android pro startupy a podniky od roku 2017. Poradíme vám a navrhneme nejlepší řešení.
Přečtěte si také