Skapa dynamiska layouter i arbetsyteappar

Innan du skapar en arbetsyteapp i Power Apps anger du om du vill skräddarsy appen för en telefon eller en surfplatta. Det här valet avgör storleken och formen på arbetsytan som du bygger din app på.

När du har valt det alternativet kan du välja ytterligare några alternativ om du väljer Inställningar > Visa. Du kan välja mellan stående och liggande orientering och skärmstorlek (endast surfplatta). Du kan även låsa eller låsa upp bredd-höjd-förhållande och stöd för rotationsenheten (eller inte).

De alternativ som är tillgängliga ligger bakom alla alternativ du gör när du utformar bildskärmslayouter. Om din app körs på en enhet med en annan storlek eller på webben, skalas hela layouten så att den passar den skärm där appen körs. Om en app som har utformats för en telefon körs i ett stort webbläsarfönster, till exempel så att appen kan kompensera och se för stor ut för dess utrymme. Appen kan inte utnyttja de extra pixlarna genom att visa fler kontroller eller mer innehåll.

Om du skapar en dynamisk layout kan kontroller reagera på olika enheter eller fönsterstorlekar, vilket gör att de olika funktionerna blir mer naturliga. Du uppnår en dynamisk layout genom att justera vissa inställningar och skriva uttryck i hela appen.

Inaktivera Skalningsanpassa

Du kan konfigurera varje skärm så att layouten anpassas efter det verkliga utrymmet som appen körs i.

Du aktiverar svarstider genom att inaktivera appens inställning för Skalningsanpassa, som är aktiverat som standard. När den här inställningen är inaktiverad stänger du även av lås höjd–bredd-förhållande eftersom du inte längre designar för en specifik skärmform. (Du kan fortfarande ange om appen stöder enhetsrotation.)

Inaktivera inställningen Scale to Fit.

Om du vill att appen ska vara responsiv måste du vidta ytterligare åtgärder, men den här ändringen är det första steget mot att göra det.

Förstå app- och skärmdimensioner

Du kan göra så att appens layouter reagerar på ändringar i skärmdimensionerna genom att skriva formler som använder egenskaperna Width och Height på skärmen. Om du vill visa egenskaperna öppnar du appen i Power Apps Studio och väljer sedan en skärmbild. Standardformlerna för de här egenskaperna visas på fliken Avancerat i den högra rutan.

Bredd = Max(App.Width, App.DesignWidth)

Höjd = Max(App.Height, App.DesignHeight)

Dessa formler refererar till egenskaperna Width, Height, DesignWidth och DesignHeight i appen. Appens egenskaper Width och Height motsvaras av dimensionerna för det enhets- eller webbläsarfönster som appen körs i. Om användaren ändrar webbläsarens storlek (eller roterar enheten om du har stängt av Lås orienteringen) ändras värdena för dessa egenskaper dynamiskt. Formlerna i skärmens egenskaper Width och Height utvärderas på samma gång när värdena ändras.

Egenskaperna DesignWidth och DesignHeight kommer från de mått du anger i rutan Visa under Inställningar. Om du till exempel väljer telefonens layout i stående orientering DesignWidth är 640 och DesignHeight är 1136.

Eftersom de används i formlerna för skärmens egenskaper Width och Height kan du tänka på DesignWidth och DesignHeight som minsta dimensioner som du ska utforma appen med. Om det faktiska område som är tillgängligt för din app är ännu mindre än dessa minimimått, ser formlerna för skärmens egenskaper Width och Height till att deras värden inte blir mindre än minsta. I så fall måste användaren bläddra för att visa hela skärmens innehåll.

När du har upprättat appens DesignWidth och DesignHeight behöver du inte (i de flesta fall) ändra standardformler för egenskaperna Width och Height. Senare ämne i den här artikeln beskrivs de fall där du kanske vill anpassa dessa formler.

Använda formler för dynamisk layout

Om du vill skapa en svarsdesign kan du söka efter och ändra storlek på varje kontroll med hjälp av formler i stället för absoluta (konstanta) koordinatvärden. Dessa formler uttrycker alla kontrollers position och storlek utifrån vad som visas i den övergripande skärmstorleken eller i förhållande till andra kontroller på skärmen.

Viktigt

När du har skrivit formler för egenskaperna X, Y, Width och Height för en kontroll skrivs dina formler över med konstanta värden om du därefter drar kontrollen i arbetsytans redigerare. När du börjar använda formler för att uppnå dynamisk layout bör du undvika att dra kontroller.

I det enklaste fallet fyller en kontroll en hel skärm. Om du vill skapa den här effekten anger du kontrollens egenskaper till följande värden:

Egenskap Värde
X 0
Y 0
Bredd Parent.Width
Höjd Parent.Height

I dessa formler använder operatoren överordnad. För en kontroll som har monterats direkt på en skärm refererar överordnad till skärmen. Med dessa egenskapsvärden visas kontrollen i det övre vänstra hörnet av skärmen (0,0) och har samma Bredd och Höjd som skärmen.

Senare i det här ämnet tillämpar du dessa principer (och operatorn överordnad) på placera kontroller i andra behållare, t.ex. gallerier, gruppkontroller och komponenter.

Ett alternativ är att kontrollen endast kan fylla den övre delen av skärmen. Om du vill skapa den här effekten anger du egenskapen Height till Parent.Height / 2 och låter övriga formler vara oförändrade.

Om du vill att den andra kontrollen ska fylla den nedre halvan av samma skärm, kan du utföra minst två olika metoder för att skapa formlerna. Det kan du göra på ett enklare sätt:

Kontroll Egenskap Formel
Upper X 0
Upper Y 0
Upper Bredd Parent.Width
Upper Höjd Parent.Height / 2
Undre X 0
Undre Y Parent.Height / 2
Undre Bredd Parent.Width
Undre Höjd Parent.Height / 2

Kontrollerna Upper och Lower.

Med den här konfigurationen uppnår du den effekt du vill, men du måste redigera varje formel om du har ändrat dig om de relativa storlekarna för kontrollerna. Du kanske till exempel bestämmer att den översta kontrollen endast ska uppta högst upp en tredjedel av skärmen, med nedre kontrollen som fyller de underliggande två tredjedelarna.

Om du vill skapa effekten måste du uppdatera egenskapen Height för den Upper kontrollen och Y och Height för kontrollen Lower. I stället kan du skriva formlerna för den Lower kontrollen när det gäller Upper kontrollen (och i sig själv), som i det här exemplet:

Kontroll Egenskap Formel
Upper X 0
Upper Y 0
Upper Bredd Parent.Width
Upper Höjd Parent.Height / 3
Lower X 0
Lower Y Upper.Y + Upper.Height
Lower Bredd Parent.Width
Undre Höjd Parent.Height - Lower.Y

Relativ storlek på kontrollerna Upper och Lower.

Med de här formlerna i stället behöver du bara ändra egenskapen Height för den Upper kontrollen om du vill uttrycka en annan bråkdel av skärmens höjd. Den Lower kontrollen flyttar automatiskt och ändrar storlek för ändringen.

Du kan använda de här formelmönstren för att uttrycka vanliga layoutrelationer mellan en kontroll, med namnet C och den överordnade eller underordnade kontrollen på samma nivå, med namnet D.

Relation mellan C och dess överordnade objekt Egenskap Formel Illustration
C fyller överordnads bredd, med en marginal på N X N Exempel på förälders fyllningsbredd C.
Bredd Parent.Width - (N * 2)
C fyller överordnads höjd, med en marginal på N Y N Exempel på föräldrarnas fyllningshöjd.
Höjd Parent.Height - (N * 2)
C justerad mot överordnad högerkant, med marginalen N X Parent.Width - (C.Width + N) Exempel på C i linje med förälderns högra kant.
C justerad mot överordnad nedre kant, med marginalen N Y Parent.Height - (C.Height + N) Exempel på C i linje med överordnadens nederkant.
C centrerad vågrätt i överordnad X (Parent.Width - C.Width) / 2 Exempel på C centrerat horisontellt på förälder.
C centrerad lodrätt i överordnad Y (Parent.Height - C.Height) / 2 Exempel på C centrerat vertikalt på föräldern.
Relation mellan C och D Egenskap Formel Illustration
C vågrätt justerad mot D med samma bredd som D X D.X Exempel på horisontellt anpassat mönster.
Bredd D.Width
C lodrätt justerad mot D med samma höjd som D Y D.Y Exempel på vertikalt inriktat mönster.
Höjd D.Height
Högerkanten för C justerad mot högerkanten på D X D.X + D.Width - C.Width Exempel på högerkantjusterat mönster.
Nedre kanten för C justerad mot nedre kanten på D Y D.Y + D.Height - C.Height Exempel på nedre kantjusterat mönster.
C centrerad vågrätt relativt D X D.X + (D.Width - C.Width) / 2 Exempel på centrerat horisontellt mönster.
C centrerad vertikalt relativt D Y D.Y + (D.Height - C.Height) /2 Exempel på centrerat vertikalt mönster.
C placerad till höger om D med ett mellanrum på N X D.X + D.Width + N Exempel på placerat till rätt mönster.
C placerad under D med ett mellanrum på N Y D.Y + D.Height + N Exempel på placerat under mönstret.
C fyller område mellan D och högerkanten för överordnad X D.X + D.Width Exempel på fyllningsutrymme mellan D och högerkantmönster.
Bredd Parent.Width - C.X
C fyller område mellan D och nedre kanten för överordnad Y D.Y + D.Height Exempel på fyllningsutrymme mellan D och botten av kantmönstret.
Höjd Parent.Height - C.Y

Hierarkisk layout

När du skapar skärmar som innehåller fler kontroller blir det enklare (eller till och med nödvändigt) att placera kontrollerna i förhållande till en överordnad kontroll, i stället för i förhållande till skärmen eller en syskon. Genom att ordna kontrollerna i en hierarkisk struktur kan du göra formlerna lättare att skriva och underhålla.

Gallerier

Om du använder ett galleri i appen måste du placera kontrollerna i galleriets mall. Du kan placera kontrollerna genom att skriva formler som använder den överordnade operatorn, som du kan använda för att referera till gallerimallen. I formlerna för kontroller i en gallerimall använder du egenskapen Parent.TemplateHeight och Parent.TemplateWidth, använd inte Parent.Width och Parent.Height, vilket motsvarar galleriets övergripande storlek.

Vertikalt galleri som visar mallens bredd och höjd.

Behållare-kontroll

Du kan använda kontrollen Layout Behållare, som överordnad kontroll.

Se exempel på ett sidhuvud högst upp på skärmen. Det är vanligt att ha ett sidhuvud med en rubrik och flera ikoner som användarna kan interagera med. Du kan skapa ett sådant sidhuvud med hjälp av kontrollen Behållare som innehåller kontrollen Etikett och två kontroller för Ikon:

Rubrik exempel med en grupp.

Ange egenskaperna för dessa kontroller till följande värden:

Egenskap Huvud Meny Stäng Befattning
X 0 0 Parent.Width - Close.Width Menu.X + Menu.Width
Y 0 0 0 0
Bredd Parent.Width Parent.Height Parent.Height Close.X - Title.X
Höjd 64 Parent.Height Parent.Height Parent.Height

För kontrollen Header hänvisar Parent till skärmen. För de andra hänvisar Parent till kontrollen Header.

När du har skrivit dessa formler kan du ändra storlek eller position för kontrollen Header genom att ändra formlerna för dess egenskaper. Storlek och positioner för de underordnade kontrollerna justeras automatiskt i enlighet med detta.

Kontroller för automatiskt layout för behållare

Du kan använda en funktion för behållare automatiskt layout för automatisk layout för de underordnade komponenterna. Dessa behållare avgör var de underordnade komponenterna placeras så att du inte behöver ange X, Y för en komponent i behållaren. Det kan också användas för att distribuera det tillgängliga utrymmet till dess underordnade komponenter baserat på inställningarna, samt både de vertikala och vågräta justeringarna för de underordnade komponenterna. Mer information: kontroller för behållare för automatisk layout

Komponenter

Om du använder en annan funktion, som kallas komponenter, kan du konstruera byggstenar och återanvända dem i hela appen. Precis som med kontrollen Behållare bör de kontroller du placerar i en komponent basera sina positions- och storleksformler på Parent.Width och Parent.Height, vilket motsvarar komponentens storlek. Mer information: Skapa en komponent.

Anpassa layout för enhetsstorlek och orientering

Hittills har du lärt dig hur du använder formler för att ändra varje kontrolls storlek som svar på det tillgängliga utrymmet, samtidigt som kontrollerna justeras i förhållande till varandra. Du kanske vill eller behöver göra fler omfattande layoutändringar som svar på olika enhetsstorlekar och orienteringar. När en enhet roteras från stående till liggande orientering kanske du vill växla från en lodrät layout till en vågrät. På en större enhet kan du presentera mer innehåll eller ordna om det så att det blir mer tilltalande. På en mindre enhet kan du behöva dela upp innehåll på flera skärmar.

Enhetsorientering

Standardformlerna för skärmens egenskaperna Width och Height, eftersom det ämne som beskrivs ovan, är inte nödvändigtvis en bra upplevelse om en användare roterar en enhet. Exempelvis har en app utformad för en telefon i stående orientering en DesignWidth på 640 och en DesignHeight på 1136. Samma app på telefon med liggande orientering får följande egenskapsvärden:

  • Skärmens egenskap Width anges till Max(App.Width, App.DesignWidth). Appens Bredd (1136) är större än dess DesignWidth (640), så formeln beräknas till 1136.
  • Skärmens egenskap Height anges till Max(App.Height, App.DesignHeight). Appens Höjd (640) är mindre än dess DesignHeight (1136), så formeln beräknas till 1136.

Med en skärm Höjd på 1136 och en enhets höjd (i den här orienteringen) på 640, måste användaren bläddra på skärmen vertikalt för att kunna visa allt innehåll, vilket kanske inte är det du vill ha.

Om du vill anpassa bildskärmens egenskaper Width och Height till enhetsorienteringen kan du använda följande formler:

Bredd = Max(App.Width, If(App.Width < App.Height, App.DesignWidth, App.DesignHeight))

Höjd = Max(App.Height, If(App.Width < App.Height, App.DesignHeight, App.DesignWidth))

Med dessa formler byter du appens värden DesignWidth och DesignHeight utifrån om enhetens bredd är mindre än dess höjd (stående orientering) eller mer än dess höjd (liggande orientering).

När du har ändrat skärmens formler bredd och höjd kanske du också vill ordna om kontrollerna i skärmen för att använda det tillgängliga utrymmet på ett bättre sätt. Om t.ex. de två kontrollerna förintar halva skärmen kan du stapla dem vertikalt stående men ordna dem sida vid sida i liggande.

Du kan använda skärmens egenskap Orientation för att avgöra om skärmen ska riktas lodrätt eller vågrätt.

Anteckning

I liggande orientering visas kontrollerna Upper och Lower som vänster och höger kontroll.

Kontroll Egenskap Formel
Upper X 0
Upper Y 0
Upper Bredd If(Parent.Orientation = Layout.Vertical, Parent.Width, Parent.Width / 2)
Upper Höjd If(Parent.Orientation = Layout.Vertical, Parent.Height / 2, Parent.Height)
Lower X If(Parent.Orientation = Layout.Vertical, 0, Upper.X + Upper.Width)
Lower Y If(Parent.Orientation = Layout.Vertical, Upper.Y + Upper.Height, 0)
Lower Bredd Parent.Width - Lower.X
Undre Höjd Parent.Height - Lower.Y

uttryck för att anpassa en stående orientering.

uttryck för att anpassa en liggande orientering.

Skärmstorlek och brytpunkter

Du kan anpassa layouten efter enhetens storlek. Skärmens egenskap Size klassificerar den aktuella enhetsstorleken. Storleken är ett positivt heltal. ScreenSize-typen tillhandahåller namngivna konstanter som underlättar läsbarheten. I tabellen visas konstanterna:

Konstant Värde Typisk enhetstyp (med standardinställningar för appar)
ScreenSize.Small 1 Telefon
ScreenSize.Medium 2 Surfplatta, hålla lodrätt
ScreenSize.Large 3 Surfplatta, hålla vågrätt
ScreenSize.ExtraLarge 4 Stationär dator

Använd de här storlekarna om du vill fatta beslut om appens layout. Om du till exempel vill att en kontroll ska vara dold på en enhet för telefon storlek men i annat fall kan du ange kontrollens egenskap Visible för den här formeln:

Parent.Size >= ScreenSize.Medium

Med den här formeln beräknas värdet sant om storleken är medel eller större och falskt annars.

Om du vill att kontrollen ska använda en annan bråkdel av skärmbredden baserat på skärmens storlek anger du kontrollens egenskap Width till följande formel:

Parent.Width *
Switch(
    Parent.Size,
    ScreenSize.Small, 0.5,
    ScreenSize.Medium, 0.3,
    0.25
)

Med den här formeln anges kontrollens bredd till hälften av skärmbredden på en liten skärm, tre tiondelar av skärmbredden på en mellanstor skärm och en fjärdedel av skärmbredden på alla andra skärmar.

Anpassade brytpunkter

Skärmens egenskapen Size beräkna genom att egenskaperna för bildskärmens egenskap Width jämförs med värdena appens egenskap SizeBreakpoints. Den här egenskapen är en tabell med en enskild kolumn som visar breddens brytpunkter som skiljer de namngivna skärmstorlekarna åt:

I en app som har skapats för surfplatta eller webben är standardvärdet i appens egenskap SizeBreakpoints är [600, 900, 1200]. I en app som har skapats för telefoner är värdet [1200, 1800, 2400]. (Värdena för telefonappar är dubblerade eftersom sådana appar använder koordinater som i praktiken är ett effektivt sätt att dubblera de koordinater som används i andra appar.)

standardvärden för App.SizeBreakpoints-egenskapen.

Du kan anpassa appens brytpunkter genom att ändra värdena i appens egenskap SizeBreakpoints. Välj App i trädvyb, välj SizeBreakpoints i egenskapslistan och redigera sedan värdena i formelfältet. Du kan skapa så många brytpunkter som appen behöver, men bara storlek 1 till 4 motsvarar de angivna skärmstorlekarna. I formler kan du referera till storlekarna bortom ExtraLarge med deras numeriska värden (5, 6 osv).

Du kan också ange färre brytpunkter. Din app kan till exempel behöva endast tre storlekar (två brytpunkter), så de möjliga skärmstorlekarna är små, medelstora och stora.

Kända begränsningar

Arbetsytan för författande svarar inte på de storleksformler som skapats. Du kan testa beteendet som du vill, spara och publicera appen och sedan öppna den på enheter eller i olika storlekar och orienteringar i webbläsaren.

Om du skriver uttryck eller formler i egenskaperna X, Y, Width och Height för en kontroll skriver du över dessa uttryck eller formler om du senare drar kontrollen till en annan plats eller ändrar storlek på kontrollen genom att dra i dess kant.

Anteckning

Kan du berätta om dina inställningar för dokumentationsspråk? Svara i en kort undersökning. (observera att undersökningen är på engelska)

Undersökningen tar ungefär sju minuter. Inga personuppgifter samlas in (sekretesspolicy).