Sdílet prostřednictvím


Alternativní zobrazení rozložení

Toto téma vysvětluje, jak můžete rozložení verzí používat kvalifikátory prostředků. Například vytvoření verze rozložení, které se používá pouze v případě, že je zařízení v režimu na šířku a verze rozložení, která je určená jenom pro režim na výšku.

Vytváření alternativních rozložení

Když kliknete na ikonu Alternativní zobrazení rozložení (vlevo od zařízení), otevře se podokno náhledu a zobrazí se seznam alternativních rozložení dostupných v projektu. Pokud neexistují žádná alternativní rozložení, zobrazí se výchozí zobrazení:

Alternate layout view pane

Když kliknete na zelené znaménko plus vedle nové verze, otevře se dialogové okno Vytvořit variantu rozložení, abyste mohli vybrat kvalifikátory prostředků pro tuto variantu rozložení:

Create layout variation

V následujícím příkladu je kvalifikátor prostředků pro orientaci obrazovky nastaven na Na šířku a velikost obrazovky se změní na Velký. Tím se vytvoří nová verze rozložení s názvem large-land:

Large-land variation

Všimněte si, že podokno náhledu na levé straně zobrazuje efekty výběru kvalifikátoru prostředků. Kliknutím na Přidat vytvoříte alternativní rozložení a přepne návrháře na toto rozložení. Podokno náhledu alternativního zobrazení rozložení označuje, které rozložení je načteno do Návrháře pomocí malého pravého ukazatele, jak je znázorněno na následujícím snímku obrazovky:

Loaded layout indicator

Úpravy alternativních rozložení

Při vytváření alternativních rozložení je často žádoucí provést jednu změnu, která platí pro všechny forkované verze rozložení. Můžete například chtít změnit text tlačítka na žlutou ve všech rozloženích. Pokud máte velký počet rozložení a potřebujete rozšířit jednu změnu do všech verzí, údržba se může rychle stát těžkopádnou a náchylnou k chybám.

Pro zjednodušení údržby více verzí rozložení poskytuje Návrhář režim více úprav , který rozšíří vaše změny do jednoho nebo více rozložení. Pokud je k dispozici více než jedno rozložení, zobrazí se ikona Více úprav :

Multi-edit icon

Když kliknete na ikonu Více úprav , zobrazí se čáry, které označují, že rozložení jsou propojená (jak je znázorněno níže). To znamená, že když provedete změnu jednoho rozložení, tato změna se rozšíří do všech propojených rozložení. Všechna rozložení můžete zrušit kliknutím na ikonu zakroužkovanou na následujícím snímku obrazovky:

Unlink all layouts

Pokud máte více než dvě rozložení, můžete selektivně přepnout tlačítko pro úpravy vlevo od každého náhledu rozložení a určit, která rozložení jsou propojená. Pokud například chcete provést jednu změnu, která se rozšíří na první a poslední ze tří rozložení, nejprve zrušíte propojení prostředního rozložení, jak je znázorněno tady:

Unlink middle layout

V tomto příkladu se změna výchozího nebo dlouhého rozložení rozšíří do jiného rozložení, ale ne do rozložení s velkou plochou.

Příklad s více úpravami

Obecně platí, že když provedete změnu jednoho rozložení, tato změna se rozšíří do všech ostatních propojených rozložení. Například přidání nového TextView widgetu do výchozího rozložení a změna textového řetězce tak, aby Portrait se stejná změna změnila na všechna propojená rozložení. Takto vypadá ve výchozím rozložení:

Add TextView

Přidá TextView se také do zobrazení rozložení s velkými místy, protože je propojeno s výchozím rozložením:

Landscape TextView

Ale co když chcete provést změnu, která je místní jenom pro jedno rozložení (to znamená, že nechcete, aby se změna šířila do žádného jiného rozložení)? Chcete-li to provést, musíte zrušit propojení rozložení, které chcete změnit, než ho upravíte, jak je vysvětleno dále.

Provádění místních změn

Předpokládejme, že chceme, aby byla přidána TextViewobě rozložení, ale chceme také změnit textový řetězec ve velkém rozložení na Landscape místo Portrait. Pokud tuto změnu provedeme v případě propojení obou rozložení, změna se rozšíří zpět do výchozího rozložení. Proto musíme nejprve zrušit propojení obou rozložení, než provedeme změnu. Když upravíme text ve velkých lokalitách na Landscape, Návrhář tuto změnu označí červeným rámečkem, který indikuje, že změna je místní pro rozložení velké plochy a není rozšířena zpět do výchozího rozložení:

Local change

Když kliknete na výchozí rozložení a zobrazíte ho TextView , textový řetězec je stále nastavený na Portrait.

Zpracování konfliktů

Pokud se rozhodnete změnit barvu textu ve výchozím rozložení na zelenou, zobrazí se v propojeném rozložení ikona upozornění. Kliknutím na toto rozložení se otevře rozložení, aby se zobrazil konflikt. Widget, který způsobil konflikt, je zvýrazněný červeným rámečkem a zobrazí se následující zpráva: Nedávné změny způsobily konflikty v tomto alternativním rozložení.

Conflicting change

Na pravé straně widgetu se zobrazí pole konfliktu, které vysvětluje konflikt:

Conflict warning

V poli konflikt se zobrazí seznam vlastností, které se změnily, a vypíše jejich hodnoty. Kliknutím na Ignorovat konflikt použijete změnu vlastnosti pouze u tohoto widgetu. Kliknutí na Použít použije změnu vlastnosti u tohoto widgetu i u widgetu protějšku v propojeném výchozím rozložení. Pokud se použijí všechny změny vlastností, konflikt se automaticky zahodí.

Zobrazení konfliktů skupin

Změny vlastností nejsou jediným zdrojem konfliktů. Konflikty je možné zjistit při vkládání nebo odebírání widgetů. Pokud je například rozložení velkého území odpojeno od výchozího rozložení a TextView ve velkém rozložení je přetaženo a vynecháno nad , ButtonNávrhář označí přesunutý widget, aby označil konflikt:

View group conflict

Nicméně, neexistuje žádná značka na Button. I když se pozice změny Button změnila, Button nezobrazí se žádné použité změny specifické pro konfiguraci velké země .

CheckBox Pokud se přidá do výchozího rozložení, vygeneruje se jiný konflikt a nad velkým rozložením se zobrazí ikona upozornění:

Checkbox conflict

Kliknutím na rozložení velké plochy se zobrazí konflikt. Zobrazí se následující zpráva: Nedávné změny způsobily konflikty v tomto alternativním rozložení:

Alt layout conflict

Kromě toho se v poli konfliktu zobrazí následující zpráva:

Conflict message

CheckBox Přidání příčin konfliktu, protože rozložení s velkou plochou obsahuje změny.LinearLayout V tomto případě však pole konfliktu zobrazí widget, který byl právě vložen do výchozího rozložení (the CheckBox).

Pokud kliknete na Ignorovat konflikt, Návrhář konflikt vyřeší a umožní, aby se widget zobrazený v poli konfliktu přetáhl a přetáhl do rozložení, ve kterém widget chybí (v tomto případě rozložení velké plochy ):

Resolved group conflict

Jak je vidět v předchozím příkladu se značkou Button, nemá červenou značku změny, CheckBox protože pouze LinearLayout změny, které byly použity ve velkém rozložení země .

Trvalost konfliktů

Konflikty se v souboru rozložení zachovají jako komentáře XML, jak je znázorněno tady:

<!-- Widget Inserted Conflict | id:__root__ | @+id/checkBox1 -->

Proto při zavření a opětovném otevření projektu budou všechny konflikty stále existovat – i ty, které byly ignorovány.