shell - Xamarin Forms 4.0 Shell Flyout Menu 顶部背景颜色设置
问题描述
我正在使用 Xamarin Forms 4.0 Shell 创建应用程序。但我无法将弹出菜单的最顶部自定义为黑色。我知道将弹出的背景颜色设置为黑色可以解决这个问题,但我需要将弹出的下部保持为其他颜色。有没有其他方法可以实现这一目标?请参阅下图以供参考。
提前致谢!
我尝试将 UIApplication.SharedApplication.StatusBarStyle 从 Light 更改为 Default,下面的屏幕截图显示时钟以黑色字体颜色(蓝色箭头)显示,但 Wifi 电池图标消失(红色箭头)
在 Github 上添加了示例以供审核。
解决方案
这有点晚了,但我自己也遇到了这个问题。实际上,这似乎是一个错误。我在您的 GitHub 问题上发布了一些我发现的内容,希望 Xamarin 团队能够修复。
同时,我找到了一种解决方法,可以使所有平台之间的弹出标题相同,而无需任何奇怪的其他黑客攻击。
作为完整参考 - 我发现浮出标题上方的白条实际上是下面浮出内容的一部分 - 菜单项。如果您更改弹出菜单的背景颜色,您将自己看到。似乎允许弹出菜单流入iOS安全区域,但标题不能。我所做的是在弹出标题模板的布局中使用负边距,然后设置一些填充以偏移 onplatform 块中的安全区域。因为这会有效地缩小内容区域,所以我也按平台设置了高度。这最终看起来像下面的代码:
<Shell.FlyoutHeaderTemplate>
<DataTemplate>
<StackLayout BackgroundColor="{DynamicResource Primary}">
<StackLayout.Margin>
<OnPlatform x:TypeArguments="Thickness">
<On Platform="iOS" Value="0,-1,0,0" />
</OnPlatform>
</StackLayout.Margin>
<StackLayout.Padding>
<OnPlatform x:TypeArguments="Thickness">
<On Platform="iOS" Value="0,20,0,0" />
</OnPlatform>
</StackLayout.Padding>
<StackLayout.HeightRequest>
<OnPlatform x:TypeArguments="x:Double">
<On Platform="iOS" Value="220" />
<On Platform="Android" Value="200" />
</OnPlatform>
</StackLayout.HeightRequest>
<ContentHere>...</ContentHere>
</StackLayout>
</DataTemplate>
</Shell.FlyoutHeaderTemplate>
我不敢相信我只在此处和该 GitHub 链接中看到了这个问题......但希望这可以帮助其他任何遇到此问题的人,直到 Xamarin 团队的修复程序生效!
推荐阅读
- sql - PROC SQL 中 NOT LIKE 的替代运算符
- kotlin - vlcj - 如何在播放前更改音频音量?
- android - Android资源链接使用失败:buildFeatures {viewBinding = true}
- z3 - 用于 SMT 中的所有用途
- bazel - Bazel:如何创建在linux上使用cmd和在windows上使用cmd_bat的genrule?
- c# - 在 C# 中连接到 Wi-Fi - EAP TTLS 用户数据和 WlanSetProfileEapXmlUserData
- python - 当我关闭程序然后重新运行它时,如何将文件信息存储到我的地图中?
- javascript - 根据另一个属性更改对象js中的属性
- javascript - 尝试制作一副纸牌
- python - 如何在 tweepy 中显示推文的全文?