Psst. EU dotace 85 % pro OSVČ a firmy lze nyní čerpat i na e-learning. Více informací
Aktuálně: Postihly zákazy tvou profesi? Poptávka po ajťácích prudce roste, využij halloweenské akce 80% výuky zdarma!
Python týden

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:

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ší:

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ů:

Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!

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):

Výsledek bude vypadat takto:

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:

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.

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
  3. 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í:

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:

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ě
Článek pro vás napsal lupa.lupa
Avatar
Jak se ti líbí článek?
1 hlasů
Aktivity (5)

 

 

Komentáře

Avatar
Adam Bucher
Člen
Avatar
Adam Bucher:11. srpna 20:54

To mi udělalo radost, že se to dá tak hezky naklikat, editace XML nebyla příjemná :D.

Mimochodem, pro zlepšení článku... Jaksi se nepovedl podnadpis v části:

... další možnosti odstranění omezení:

  1. V Preview
  2. V Atributech vybrané komponenty
  3. Odstranění omezení v Preview

=============­================== Zde omezení odstraníme...

 
Odpovědět
11. srpna 20:54
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 1 zpráv z 1.