我在我的应用程序中使用Shell
来处理视图之间的导航,它的FlyoutMenu
在Android上运行得很好,如下所示:
Android 上的FlyoutMenu屏幕截图
然而,当我在iOS上打开Flyout时,它看起来完全不同(而且是错误的(:
iOS 上的FlyoutMenu屏幕截图
这是我在AppShell.xaml:中的代码
<?xml version="1.0" encoding="utf-8" ?>
<Shell xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="CMApp.AppShell"
xmlns:d="http://xamarin.com/schemas/2014/forms/design"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
Title="Cargomando"
xmlns:pages="clr-namespace:CMApp"
xmlns:resources="clr-namespace:CMApp.Resources"
FlyoutBackgroundColor="LightGray">
<Shell.Resources>
<ResourceDictionary>
</ResourceDictionary>
</Shell.Resources>
<Shell.FlyoutHeader>
<Image Source="cargomando.png"/>
</Shell.FlyoutHeader>
<FlyoutItem Title="{x:Static resources:Tour.TitleString}">
<Tab>
<ShellContent>
<pages:TourList/>
</ShellContent>
</Tab>
</FlyoutItem>
<FlyoutItem Title="{x:Static resources:Settings.TitleString}">
<Tab>
<ShellContent>
<pages:Settings/>
</ShellContent>
</Tab>
</FlyoutItem>
<MenuItem Text="{x:Static resources:Footer.PrivacyProtection}" Command="{Binding PrivacyProtectionCommand}"/>
<MenuItem Text="{x:Static resources:Footer.Imprint}" Command="{Binding ImprintCommand}"/>
<MenuItem Text="DEBUG: Tracking stoppen" Command="{Binding StopTrackingCommand}"/>
</Shell>
我做错了什么,它在安卓系统上运行良好,但在iOS系统上运行不好?谢谢
在为Lucas Zhang创建示例应用程序的过程中,我注意到该示例应用程序运行良好。在比较了我的应用程序和经过一些挖掘的样本后,我注意到问题是由在App.xaml
的ResourceDictionary
中为Grid
定义全局样式引起的。Xamarin显然对FlyoutMenu
中的元素使用了Grid
,我的风格使用了一个相当大的HeightRequest
,但这似乎只在iOS上发生。