How to detect screen orientation of the device in Xamarin.Forms?
15,015
Solution 1
I tried it with dependency injection, but no succes yet. Right now, I solved it like this:
- Use
OnSizeAllocated(double, double)
for changing the screen on orientation changes. - Use a Singleton for storing the current orientation.
Xamarin.Forms Page
protected override void OnSizeAllocated(double width, double height)
{
base.OnSizeAllocated(width, height);
if (DeviceInfo.IsOrientationPortrait() && width > height || !DeviceInfo.IsOrientationPortrait() && width < height)
{
// Orientation got changed! Do your changes here
}
}
Singleton Class
public class DeviceInfo
{
protected static DeviceInfo _instance;
double width;
double height;
static DeviceInfo()
{
_instance = new DeviceInfo();
}
protected DeviceInfo()
{
}
public static bool IsOrientationPortrait()
{
return _instance.height > _instance.width;
}
public static void SetSize(double width, double height)
{
_instance.width = width;
_instance.height = height;
}
}
Solution 2
Just add this to your Page, or better yet your BasePage:
static bool IsPortrait(Page p) { return p.Width < p.Height; }
![Femil Shajin](https://i.stack.imgur.com/zdXsm.jpg?s=256&g=1)
Comments
-
Femil Shajin about 2 years
How to detect screen orientation change in Xamarin Forms? I need to change the view on orientation change, what should I do to trigger a change on orientation change? Providing a link or sample code would be very helpful.
Thanks in advance
-
ToolmakerSteve almost 9 yearsUseful tip for code that will need to cope with different orientations, though that doesn't show how to trigger some action when orientation changes - some type of event listener (or "on" method) is needed.