所以我是Xamarin开发的新手,我有一个问题,我无法找到答案。是否可以实现一个视图,使其在每个平台上或甚至一个平台上看起来不同? IE - 视图在iOS和Android上看起来类似,但对于UWP桌面应用程序,它可能有更多可用的控件,因为有更多的屏幕空间。提前谢谢。
答案 0 :(得分:1)
当然可以。最简单的方法是在XAML中使用OnPlatform
(请参阅here)标记
<OnPlatform x:TypeArguments="View">
<On Platform="iOS">
<!-- Use view for iOS here -->
</On>
<On Platform="Android">
<!-- Use view for Android here -->
</On>
<On Platform="UWP">
<!-- Use view for UWP here -->
</On>
</OnPlatform>
在您的情况下(使用Android和iOS的相同视图),您可以将其简化为
<OnPlatform x:TypeArguments="View">
<On Platform="iOS, Android">
<!-- Use view for iOS here -->
</On>
<On Platform="UWP">
<!-- Use view for UWP here -->
</On>
</OnPlatform>
如果要在代码中创建视图,可以使用Device.RuntimePlatform
View CreateViewForCurrentPlatform()
{
switch(Device.RuntimePlatform)
{
case Device.iOS:
case Device.Android:
return new View1();
case Device.UWP:
return new View2();
}
throw new Exception("Unsupported platform");
}
无论如何,既然你说过
对于UWP桌面应用程序,它可能有更多可用控件,因为屏幕空间更多。
您应该考虑使用Device.Idiom
代替(here),这样您就可以区分平板电脑,台式机和手机。 Android和iOS也在平板电脑上运行,浪费屏幕空间会很遗憾。