我是Xamarin移动开发的新手,我一直致力于我的第一个Xamarin.Forms跨平台应用程序。
在目前的状态下,我的华为Nexus上的用户界面看起来很完美,但遗憾的是有问题。
在开发和测试期间,调试过程到目前为止我一直仅使用iPhone 6 Plus和Nexus 7仿真器和Nexus 6P作为物理设备假设(到我的错误)Xamarin将把所有内容扩展到具有较小屏幕的设备,然而,结果证明是完全错误的。
当我试图在屏幕更小的模拟器上运行应用程序时,比如iPhone 4/5,UI完全崩溃并且看起来不合适(参考图片:http://i.imgur.com/bSMQcuW.png),现在我是留下疑惑,正是我做错了。
给定图片中UI的概念如下:网格包含包含嵌套网格的行,其中包含Label和ButtonGroup(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),但它没有解释如何处理具有多种不同屏幕尺寸/分辨率的手机 - 或者也许我错过了它。
答案 0 :(得分:1)
尺寸与显示无关。这意味着,Xamarin.Forms使用平台特定的机制来计算绝对像素尺寸。
示例
320 * 480像素显示器上的1 * 1像素视图(例如iOS上的基本单元)在640 * 960像素和640 * 1136像素显示器上将是2 * 2像素。
这对您意味着:通常您不必关心解决方案。
您可以做的是根据Device.Idiom
提供不同的布局。以下是一个示例:https://blog.xamarin.com/bringing-xamarin-forms-apps-to-tablets/