Building responsive Microsoft PowerApps has been a tricky thing. However, there are a few new options available in order to create really responsive PowerApps. So let’s jump right in and check out the new features!
Let’s start with creating a new PowerApp from the PowerApps Portal. In this case, we choose a Canvas-App, of course. I recommend choosing the tablet layout for playing around to have more space to edit the PowerApp. However, keep in mind the format we’re going to choose will be the minimum screen size for the app! Items will still scale probably on smaller screen sizes, but you may see scroll bars or you may be able to scroll „outside“ the app on mobile phones! So although we’re building a responsive app, a minimum screen size must be set. The screen orientation (landscape, portrait) will remain relevant as well. However, we can still change these settings later but I suggest to choose a proper size from start on.
Having created the PowerApp, navigate to File → App settings → Screen size + orientation and then scroll down to Advanced Settings. Toggle the setting Scale to fit so it’s turned on if it hasn’t been so. That activated the ability to create responsive apps and access those required information. After that, don’t forget to apply your settings by pressing the button Apply in the bottom right corner.
Let’s see how it works with an easy to understand example: First, we can create a a standard label field and edit the text to the following value:
"Screen Size: " & App.Width & " (W) x " & App.Height & " (H)"
Those two parameters return the current width and height of the application which is (by default) 1366 pixels (width) and 768 pixels (height). The screen size including the orientation and the aspect ratio can be changed in the previously visited app settings page.
Keep in mind that there are a few things in PowerApps that only work if a PowerApp is saved and published. This also applies in the case of responsive apps. To do so, navigate to File → Save as and save the PowerApp by clicking the button Save. And you’re done.
In order to see the effect, you have to navigate to your PowerApps and start it from outside the building studio. You can do that by opening a new tab click Play on your PowerApp:
Having startet your PowerApp, you can see that the label dynamically changes its width and height values based on your internet browser window size or the screen size on phones and tablets.
Okay, let’s start with something more exciting and place a button in the PowerApp and make it responsive. Having inserted an item (in our case the button), you have to consider four properties where to edit in order to achieve full responsivenes:, you have to set the Height and the Width property to its equivalents:
- X (Position)
- Y (Position)
Let’s take a look at them and how to apply those properties to the items:
|Item.Height||App.Height * 0.2||item has 20% of the height of the PowerApp|
|Item.Width||App.Width * 0.5||item has 50% of the width of the PowerApp|
|Item.X||App.Width * 0.5 – Item.Width * 0.5||item is centered horizontally|
|Item.Y||App.Height * 0.5 – Item.Height * 0.5||item is centered vertically|
Always remember to save and publish your PowerApp in order to see the result.
Let’s have a look how this would look like in real life:
And here are a few pictures of the PowerApp working probably in different sizes:
Have a look at those scroll bars which appear if the window is smaller than the minimum screen size. As I mentioned at the beginning, a proper minimum screen size still has to be set.
Please keep in mind: Once you drag and drop an existing item on the canvas, it will automatically chance its position and therefore the X and Y parameters. PowerApps doesn’t keep your responsive settings for the item; it will go back to pixels and it will make that part of your PowerApp non-responsive anymore. Therefore, my best practice is to first create the desired layout and then use App.Width and App.Height properties to make the PowerApp responsive.
Additional information on how to continue your journey can be found here: