在 Xamarin.Forms 中解决不同的屏幕分辨率?缩放元素?

Addressing Different Screen Resolutions In Xamarin.Forms? Scaling Elements?

我是 Xamarin 移动开发的新手,我一直在开发我的第一个 Xamarin.Forms 跨平台应用程序。

在目前的状态下,UI 在我的 Huawei Nexus 上看起来很完美,但是,遗憾的是有一个问题。

到目前为止,在开发和测试、调试过程中,我使用iPhone 6 Plus和Nexus 7模拟器以及Nexus 6P作为物理设备假设(我的错误)Xamarin 会负责将所有内容扩展到屏幕较小的设备,但是事实证明这是完全错误的。

当我尝试 运行 在屏幕较小的模拟器上运行应用程序时,比如 iPhone 4/5,UI 完全崩溃并且看起来不合适(参考图片:http://i.imgur.com/bSMQcuW.png ),现在我想知道我到底做错了什么。

给定图片中 UI 的想法如下:包含行的网格包含嵌套的网格,其中包含标签和按钮组 (XLabs)。

var Grid = new Grid
{
    HorizontalOptions = LayoutOptions.Fill,
    ColumnDefinitions =
    {
        new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) },
        new ColumnDefinition { Width = new GridLength(2, GridUnitType.Star) }
    }
};

var TextLabel = new Label 
{
    VerticalOptions = LayoutOptions.CenterAndExpand, 
    HorizontalOptions = LayoutOptions.Start, 
    FontSize = 18, TextColor = Color.Black 
};

var VarButtonGroup = new ButtonGroup
{
    IsNumber = true,
    Rounded = true,
    ViewBackgroundColor = Color.White,
    BorderColor = Color.White,
    OutlineColor = Color.White,
    BackgroundColor = Color.FromHex("#0099cc"),
    TextColor = Color.White,
    SelectedTextColor = Color.White,
    SelectedBackgroundColor = Color.Black,
    SelectedBorderColor = Color.White,
    SelectedFrameBackgroundColor = Color.White,
    HorizontalOptions = LayoutOptions.EndAndExpand,
    VerticalOptions = LayoutOptions.Center,
    Padding = new Thickness(10),
    Items = RadioButtonValues,
    Scale = 1,
    SelectedIndex = -1
 };

我知道您可以使用 Device.OnPlatform() 将代码自定义为特定于平台的代码,但这似乎无法解决任何问题。

Xamarin.Forms 给定的文档仅显示了平台之间在缩放方面的差异 (iOS/Android/WinPhone),但是它没有解释如何解决具有多个不同屏幕的手机 sizes/resolutions - 或许我错过了。

尺寸与显示无关。这意味着,Xamarin.Forms 使用平台特定机制来计算绝对像素尺寸。

示例

在 320*480 像素的显示器上显示为 1*1 像素的视图(即 iOS 上的基本单位)将在 640*960 像素和 640* 上显示为 2*2 像素1136px 显示.

这对您来说意味着:通常您不必关心分辨率。

您可以做的是根据 Device.Idiom 提供不同的布局。这是一个例子:https://devblogs.microsoft.com/xamarin/bringing-xamarin-forms-apps-to-tablets/