Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Lekce 10 - Android programování - ConstraintLayout - Druhy omezení

V minulé lekci, Android programování - ConstraintLayout - Vytvoření omezení, jsme si představili ConstraintLayout a ukázali si jak vytvářet a odstraňovat omezení různými způsoby.

V dnešním Java tutoriálu programování pro Android si ukážeme základní druhy omezení ConstraintLayout včetně praktických ukázek použití.

Omezení k nadřazenému objektu

Toto horizontální/ver­tikální omezení již známe. Jednoduše jím komponentu připneme k jedné straně nadřazeného objektu:

Základy vývoje Android aplikací v Javě

Také víme, že nastavením tohoto omezení z obou stran ji vycentrujeme.

Vzájemná omezení mezi komponentami

Komponenta B je na obrázku níže omezena tak, aby byla vždy vpravo od komponenty A. Komponenta C je omezena pod komponentu A. Znázorněná omezení však neřeší zarovnání, takže B se může stále pohybovat nahoru nebo dolů a komponenta C se může pohybovat do stran:

Základy vývoje Android aplikací v Javě

Tento druh omezení používáme v případech, kdy potřebujeme komponentám určit jejich vzájemnou horizontální nebo vertikální pozici. Vraťme se k předchozímu obrázku. Jakkoliv změníme pozici komponenty A vertikálně, bude komponenta C tuto změnu pozice kopírovat tak, aby vždy byla pod komponentou A ve vzdálenosti 32dp. Pokud komponentu A posuneme horizontálně, pozice komponenty C se nezmění. Podobně bude horizontální změnu pozice komponenty A kopírovat komponenta B. Ta vždy bude vpravo od komponenty A ve vzdálenost 32dp. Vertikální posun komponenty A pozici komponenty B nijak neovlivní.

Omezení jedné komponenty na druhou vytvoříme podobně jako v předchozím odstavci u omezení k nadřazenému objektu s tím rozdílem, že omezovanou komponentu nepřipneme k nadřazenému objektu, ale k hraně té komponenty, na kterou omezení vytváříme.

Zarovnání okrajů komponent

Na obrázku je levá strana komponenty B zarovnána s levou stranou komponenty A:

Základy vývoje Android aplikací v Javě

Efektu zarovnání docílíme těmito kroky:

  • Kliknutím myši označíme jeden ze dvou zarovnávaných objektů - tím budou na všech jeho hranách zobrazeny záchytné body. Vždy označíme tu komponentu, která se má přizpůsobit:
Základy vývoje Android aplikací v Javě
  • Myší uchopíme záchytný bod té strany komponenty, kterou chceme zarovnat a pohybem myši z něj "vytáhneme" spojovací linku:
Základy vývoje Android aplikací v Javě
  • Vytaženou spojovací linku dovedeme k záchytnému bodu druhé ze dvou zarovnávaných komponent. Po propojení obou záchytných bodů dojde k posunutí toho objektu, ze kterého byla vodící linka vytažena:
Základy vývoje Android aplikací v Javě

Pokud chceme komponenty vzájemně zarovnat na střed, bude postup stejný jako v předchozím příkladu. Rozdíl bude v tom, že popsané zarovnání aplikujeme i na protilehlé straně zarovnávaných komponent:

Základy vývoje Android aplikací v Javě

Zarovnání lze upravit běžným nastavením parametru layout_margin. Při práci s layoutem ConstraintLayout máme v okně Attributes k dispozici pomocné podokno Constraint Widget, kde, mimo jiné, můžeme margin snadno nastavit a nebo zvolit jednu z připravených hodnot. Na následujícím obrázku je komponenta B posunuta o 24dp. Posun je definován parametrem layout_margin_left pomocí zmíněného okna Constraint Widget:

Základy vývoje Android aplikací v Javě

Existuje i další možnost nastavení zarovnání komponent, které nám usnadní práci se zarovnáním skupiny komponent o počtu větším než dvě. Všechny dotčené komponenty vybereme (označíme) a poté klikneme na položku Align na panelu nástrojů a vybereme typ zarovnání:

Základy vývoje Android aplikací v Javě

Zarovnání podle základní linie textu (Baseline)

Komponenty můžeme zarovnat podle textu na nich. Klikneme pravým tlačítkem myši na komponentu A a v rozbaleném menu zvolíme možnost Show Baseline:

Základy vývoje Android aplikací v Javě

Poté klikneme na zobrazenou základní linii textu komponenty A a přetáhneme čáru na linii komponenty B:

Základy vývoje Android aplikací v Javě

Toto omezení (zarovnání) používáme například u komponent jako TextView, EditText nebo Button pro horizontální zarovnání jejich textu do jednoho řádku bez ohledu na celkovou výšku zarovnaných komponent. Například takto:

Základy vývoje Android aplikací v Javě

I zde máme možnost všechny zarovnávané komponenty označit a pod volbou Align v panelu nástrojů zvolit možnost Baselines.

Omezení na vodítko (Guideline)

Do layoutu můžeme přidat pomocné svislé nebo vodorovné vodítko, ke kterému komponentu omezíme. Toto vodítko nebude pro uživatele aplikace viditelné, slouží pouze nám, při vytváření návrhu layoutu. Vodítko můžeme umístit do rozvržení na základě jednotek dp nebo procent %, vzhledem k okraji rozvržení.

Pro vytvoření vodící linky klikneme na příslušnou položku (viz následující obrázek) na panelu nástrojů a vybereme jeden ze dvou druhů vodítek (svislé nebo vodorovné):

Základy vývoje Android aplikací v Javě

Vodící linku můžeme různě přesouvat a kliknutím na kružnici na okraji této linky přepínáme režim měření vzdálenosti od okraje v dp nebo v %:

Základy vývoje Android aplikací v Javě

Na předchozím obrázku je vidět komponenta A, která má horizontální omezení nastaveno na vodítko a navíc má parametr layout_margin_left nastaven na hodnotu 24dp. Použité vodítko je od levého okraje ve vzdálenosti odpovídající 33% celkové šířky dostupného prostoru. Kdykoliv vodítku změníme jeho pozici, bude ho následovat i komponenta A.

Praktická ukázka vodítka

Použití vodítka si ukážeme v praxi. A to tak, že předěláme vzhled naší kalkulačky:

Základy vývoje Android aplikací v Javě

Pokud vzhled z obrázku porovnáte s původním vzhledem kalkulačky, všimnete si čtyř TextView navíc a rozdělení okna aplikace do dvou různě širokých sloupců. Vlevo jsou popisky komponent a vpravo jsou komponenty používané uživatelem. Jediná komponenta, která nerespektuje rozdělení do sloupců, je tlačítko =.

Takového vzhledu snadno dosáhneme právě s pomocí vertikálního vodítka, jehož vzdálenost od levého okraje odpovídá 40 % celkové šířky. Všechny komponenty, kromě tlačítka, mají příslušná horizontální omezení nastavena na vodítko. Vodítko není ničím jiným, než pomocnou záchytnou hranicí, na kterou lze omezovat ostatní komponenty.

Komponenty v levém sloupci mají navíc nastavený parametr layout_margin_right, proto jsou od vodítka odsazeny směrem do leva. Posouváním pozice vodítka můžeme měnit poměr šířek obou sloupců, přičemž tuto změnu budou kopírovat všechny ty komponenty, které mají na toto vodítko nějaké omezení - které jsou k tomuto vodítku jakkoliv "připoutané".

V příští lekci, Android programování - ConstraintLayout - Druhy omezení 2, si ukážeme další druhy omezení ConstraintLayout včetně praktických ukázek použití.


 

Předchozí článek
Android programování - ConstraintLayout - Vytvoření omezení
Všechny články v sekci
Základy vývoje Android aplikací v Javě
Přeskočit článek
(nedoporučujeme)
Android programování - ConstraintLayout - Druhy omezení 2
Článek pro vás napsal Pavel
Avatar
Uživatelské hodnocení:
14 hlasů
Autor se věnuje programování v Javě, hlavně pro Android. Mezi jeho další zájmy patří Arduino, Minecraft.
Aktivity