NOVINKA! E-learningové kurzy umělé inteligence. Nyní AI za nejlepší ceny. Zjisti více:
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Lekce 9 - Android programování - ConstraintLayout - Vytvoření omezení

V minulé lekci, Android programování - Životní cyklus aktivity, jsme se dozvěděli co je to API, jak vytvořit projekt a základní informace o životním cyklu aktivity.

V dnešní lekci se seznámíme s kontejnerem ConstraintLayout, který je v Android Studiu používán jako výchozí layout k rozložení komponent na aktivitě. ConstraintLayout disponuje slušnou hromádkou funkcí, které z něj dělají mocného pomocníka při návrhu našich aktivit. My si popíšeme hlavně ty základní. Aby nechyběla praktická ukázka, ukážeme si vše na vzhledu projektu SimpleCalc, kde jsme vytvářeli velice jednoduchou kalkulačku. Vzhled kalkulačky vypadal takto:

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

ConstraintLayout

ConstraintLayout umožňuje vytvářet složitá rozvržení grafického uživatelského rozhraní. Tento layout je hodně podobný RelativeLayout v tom, že všechny komponenty jsou rozloženy podle vztahů mezi sebou a/nebo nadřazeným objektem, často tak, že je k sobě přichytíme. Tyto vztahy definujeme pomocí tzv. omezení (constraints), viz dále.

Vytvořme nyní znovu požadovaný vzhled kalkulačky ze základních komponent. Jde skutečně o velice jednoduchý design bez žádných složitých prvků. Ukážeme si při tom další možnosti pozicování komponent naší kalkulačky v kontejneru ConstraintLayout.

V Android Studiu otevřeme soubor activity_main.xml a okno s náhledem přepneme na zobrazení Blueprint, které je pro tuto práci nejvhodnější:

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

Režim náhledu Blueprint je k sestavování layoutu vhodnější proto, že jsou v něm dobře znázorněny všechny vytvořené vazby a závislosti mezi jednotlivými objekty.

Přidání komponenty do layoutu

Nyní postupně přetáhneme z okna Palette do okna rozvržení následující komponenty:

  • EditText (políčko pro zadávání textu),
  • Spinner (rozbalovací menu),
  • TextView (text) a
  • Button (tlačítko).

Komponenty zůstanou tam, kde je necháme, i když nemají definována žádná omezení. Je tomu tak pouze proto, aby byla práce v editoru snadnější.

Pokud ale aplikaci takto, bez nutných omezení spustíme, bude výsledkem, že se všechny vložené komponenty vykreslí v levém horním rohu!

Ačkoli chybějící omezení nezpůsobí chybu kompilace, editor rozložení označuje chybějící omezení jako chybu na panelu nástrojů:

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

Zde jsme upozorněni na chybějící horizontální i vertikální omezení všech vložených komponent. Pojďme se tedy na omezení podívat.

Omezení

Omezením rozumějme zejména přichycení komponenty k nějaké jiné z nějaké její strany. Další možnosti si vysvětlíme dále. Každé omezení představuje spojení nebo zarovnání s jinou komponentou, nadřazeným layoutem nebo neviditelným vodítkem.

Omezeními (constraints) definujeme pozici komponenty. Každá vložená komponenta musí mít alespoň jedno horizontální a jedno vertikální omezení, kterými definujeme polohu komponenty v dané ose. Jednoduše komponentu k něčemu připneme.

Vytvoření omezení (constraints)

Omezení můžeme nastavit třemi způsoby:

  1. Přidáním potřebného kódu v XML
  2. V Preview myší
  3. V Atributech vybrané komponenty

Všechny tři způsoby si ukážeme na nastavení omezení prvního zadávacího políčka naší kalkulačky.

1. Nastavení omezení v XML

Tento způsob je nejméně pohodlný. Následující kód přidá políčku horizontální omezení tak, že jej přichytí k pravé i levé straně nadřazeného objektu (kterým je ConstraintLayout). Tím, že layout s tlačítky omezíme na levou i pravou stranu layoutu, jej horizontálně vycentrujeme. Vertikální omezení je pak vytvořeno pouze přichycením k horní hraně layoutu:

app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"

2. Nastavení omezení v Preview myší

To samé, co jsme nastavili výše, si zkusíme nastavit několika tahy myši v Preview. Jak je naznačeno žlutou barvou na následujícím obrázku, postupně uchopíme každý příslušný kruhový úchyt pro omezení a přetáhneme myší k okraji layoutu (nebo jiné komponenty):

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

Výsledek bude vypadat takto:

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

Možná jste si všimli, že právě editovaný EditText není úplně "přilepen" k okrajům layoutu, ale je zde kousek mezera. Je to proto, že nadřazený layout má nastaven atribut padding.

3. Nastavení omezení v Atributech komponenty

Třetím způsobem nastavení omezení prvního políčka kalkulačky je označení příslušné komponenty (v okně Preview nebo v okně Component Tree). Pak v okně Attributes klikneme na tlačítko + té strany komponenty, které chceme omezení nastavit:

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

Po kliknutí na + je automaticky vytvořeno omezení a je nastaven margin (mezera), jehož velikost odpovídá aktuální pozici komponenty, ve které se nacházela před přidáním omezení. Tento margin můžeme samozřejmě změnit.

V případě prvního políčka kalkulačky klikneme na levé a pravé + a oba postranní marginy nastavíme na 0. Tím je políčko horizontálně vycentrováno. Aby bylo políčko roztažené na celou šířku displeje, musíme navíc nastavit v okně Attributes jeho atribut layout_width na hodnotu 0dp (match constraint). Vertikální omezení políčka vytvoříme kliknutím na horní +. Opět ohlídáme, aby margin byl na hodnotě 0, protože chceme mít první políčko "přilepené" úplně nahoře.

Na následujícím obrázku je zmíněné nastavení parametru layout_width naznačeno:

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

Odstranění omezení

Pojměme téma komplexně, abychom s ConstraintLayout uměli sami pracovat. Nová omezení si teď můžeme zkusit zas odstranit. Kromě toho, že samozřejmě můžeme přímo v XML kódu odstranit příslušné atributy, máme tyto další možnosti odstranění omezení:

  1. V Preview
  2. V Atributech vybrané komponenty

1. Odstranění omezení v Preview

Zde omezení odstraníme označením příslušného omezení a stisknutím tlačítka Del na klávesnici nebo najetím myši na příslušné omezení při stisknuté klávese Ctrl (což způsobí zčervenání tohoto omezení) a kliknutím na toto omezení:

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

2. Odstranění omezení v Atributech komponenty

Myší najedeme na místo dle následujícího obrázku a po zobrazení křížku klikneme:

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

Možná jste si všimli, že někdy je v Preview omezení znázorněno čárou a někdy "pružinkou", spojující dané objekty. Pružinka znázorňuje "protichůdné síly", kdy je komponenta např. "přitahována" ke dvěma protilehlým stěnám a tím je centrována.

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


 

Předchozí článek
Android programování - Životní cyklus aktivity
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í
Článek pro vás napsal Pavel
Avatar
Uživatelské hodnocení:
18 hlasů
Autor se věnuje programování v Javě, hlavně pro Android. Mezi jeho další zájmy patří Arduino, Minecraft.
Aktivity