Xamarin Forms - 如何让 TableView 和 ListView 扩展到 iPhone X 安全区域?
Posted
技术标签:
【中文标题】Xamarin Forms - 如何让 TableView 和 ListView 扩展到 iPhone X 安全区域?【英文标题】:Xamarin Forms - How to have TableView and ListView Extend into iPhone X Safe Area? 【发布时间】:2019-08-08 20:45:04 【问题描述】:我在页面构造函数中使用了特定于平台的使用安全区域,但 tableview 和 listview 被向上推,并且不会延伸到页面底部。例如,在附图中,您可以看到 tableview 灰色没有延伸到页面底部。如何填写?
【问题讨论】:
你能解决这个问题吗?我有一个列表视图,我希望它与主页指示器重叠(如果它扩展了屏幕),但如果我滚动到末尾,它应该考虑它并将最后一个元素移动到主页指示器上方。 @SebastianGreifeneder 我确实修复了它,但不是我想要的方式。我单独关闭了该页面的安全区域,它工作正常。我猜因为它只是一个列表视图,它知道该怎么做。如果页面有更多视图而不仅仅是列表视图,这将不起作用。我为其他页面保留了安全区域,这些都很好。 我可以确认您提到的行为。如果列表视图是 ContentPage 的子视图,那么它可以开箱即用,您甚至不必指定安全区域。如果列表视图在布局中,则不起作用。 【参考方案1】:您需要设置页面的BackgroundColor
。 UseSafeArea 仅添加填充,因此无论 ContentPage 的 BackgroundColor
是什么都将被公开。如果你想让它成为你的tableview灰色,你需要设置ContentPage.BackgroundColor = Color.Gray
。
【讨论】:
这会在底部栏上提供不同的灰色。我也不喜欢这个,因为如果 ios 13 改变了 tableview 的外观或打开了 iOS 暗模式怎么办?它不会像在 iOS 中那样将视图向下延伸到底部,其中 tableview 将是全屏但单元格不会向下到底部而是在栏上方停止。 您可以将其设置为您想要的任何颜色。您可以使用十六进制来获得完全相同的灰色阴影以匹配 tableview。至于暗模式,您应该使用 DynamicResources 来考虑颜色。当用户切换到深色模式时,您的应用应使用适当的配色方案。如果您指的是 iOS 13s 系统范围的暗模式,那么这在您的应用程序中并不是自动的。你必须让你的应用处理它。 我指的是 iOS 13 的系统范围的暗模式,它在带有表格视图的本机应用程序中是自动的。我所有的原生非 xamarin 应用程序都会自动改变颜色。他们还可以正确处理单元格内容超出屏幕底部的安全区域。【参考方案2】:事实上,在你的情况下,你不想要安全区域。
所以将UseSafeArea
设置为false,并自己处理填充。
【讨论】:
当单元格数量下降到屏幕下方时,这不适用于列表视图。在原生 Xcode 应用程序上,使用安全区域可以解决此问题。【参考方案3】:您可以为 iPhone 安全区域添加以下代码。
xmlns:ios="clr-namespace:Xamarin.Forms.PlatformConfiguration.iOSSpecific;assembly=Xamarin.Forms.Core"
ios:Page.UseSafeArea="true"
【讨论】:
以上是关于Xamarin Forms - 如何让 TableView 和 ListView 扩展到 iPhone X 安全区域?的主要内容,如果未能解决你的问题,请参考以下文章