Xamarin 表单轮播视图 - Android 和 iOS 差异
Posted
技术标签:
【中文标题】Xamarin 表单轮播视图 - Android 和 iOS 差异【英文标题】:Xamarin Forms Carousel Views - Android and iOS differences 【发布时间】:2020-04-16 13:42:14 【问题描述】:我无法让两个平台都表现出相同的行为
我想同时在屏幕上显示多个项目
ios 似乎允许 PeekAreaInserts 像 Margin 一样工作,因为您可以指定顶部、右侧、底部和左侧
android 似乎只承认一个价值
这意味着一旦我设置了 PeekAreaInsert 值,Android 视图就会在页面中间使用第一个项目呈现自己,而 iOS 视图可以使用该值但仍与页面左侧对齐
在使用 PeekAreaInserts 值时,是否可以通过让 Android 与视图的开始或左侧对齐来实现一致的外观和感觉?
以下示例在 iOS 上左对齐轮播视图,但在 Android 上相同的代码始终将第一项居中
<CarouselView.Margin>
<OnPlatform x:TypeArguments="Thickness">
<On Platform="iOS" Value="5, 0, 0, 0" />
<On Platform="Android" Value="0, 0, 0, 0" />
</OnPlatform>
</CarouselView.Margin>
<CarouselView.PeekAreaInsets>
<OnPlatform x:TypeArguments="Thickness">
<On Platform="iOS" Value="0, 0, 200, 0" />
<On Platform="Android" Value="200,0,0,0" />
</OnPlatform>
</CarouselView.PeekAreaInsets>
【问题讨论】:
我们在 Android 和 iOS 上使用PeekAreaInsets
时会有不同的行为。在 iOS 中,我们总是将每个元素定位在中心。因此,在某些情况下,我们会在第一个元素的左侧或最后一个元素的右侧留出空间。在 Android 上,PeekAreaInsets
不会将该空间添加到开头或结尾。如果你确实想在 iOS 和 Android 上达到同样的效果,你最好使用 CollectionView
和 Snap 选项。
好的,可以了,谢谢
我会把它作为答案发布。你能接受吗?这将帮助更多的人:)
【参考方案1】:
原因:我们在 Android 和 iOS 上使用 PeekAreaInsets
时会有不同的行为。
在 iOS 中,我们总是将每个元素定位在中心。因此,在某些情况下,我们会在第一个元素的左侧或最后一个元素的右侧留出空间。
在 Android 中,PeekAreaInsets
不会在开头或结尾添加空格。
解决方法:如果您确实想在 iOS 和 Android 上实现相同的效果,您最好使用带有 Snap 选项的 CollectionView
(设置为 开始)。
【讨论】:
以上是关于Xamarin 表单轮播视图 - Android 和 iOS 差异的主要内容,如果未能解决你的问题,请参考以下文章
带有 xamarin 表单的 xamarin 本机视图加载缓慢