Xamarin.Forms每个平台的不同视图

时间:2018-04-11 15:51:56

标签: xamarin.forms

所以我是Xamarin开发的新手,我有一个问题,我无法找到答案。是否可以实现一个视图,使其在每个平台上或甚至一个平台上看起来不同? IE - 视图在iOS和Android上看起来类似,但对于UWP桌面应用程序,它可能有更多可用的控件,因为有更多的屏幕空间。提前谢谢。

1 个答案:

答案 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也在平板电脑上运行,浪费屏幕空间会很遗憾。