xamarin.forms - Xamarin 表单轮播视图 - Android 和 iOS 差异
问题描述
我无法让两个平台都表现出相同的行为
我想同时在屏幕上显示多个项目
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>
解决方案
原因:PeekAreaInsets
我们在 Android 和 iOS 上使用时有不同的行为。
在 iOS 中,我们总是将每个元素定位在中心。因此,在某些情况下,我们会在第一个元素的左侧或最后一个元素的右侧留出空间。
在 Android 中,PeekAreaInsets
不会在开头或结尾添加该空间。
解决方法: 如果您确实想在 iOS 和 Android 上实现相同的效果,最好使用CollectionView
Snap选项(将其设置为Start)。
推荐阅读
- matlab - 具有 unit16 图像与 unit8 图像的局部二元特征
- python - 通过 zip 文件中的 pip 安装 comtypes-1.1.7 后出错
- python - 用python处理excel中的数据
- apache-spark - 未使用的火花工人
- google-cloud-platform - 如何将文件直接从谷歌驱动器移动到谷歌云平台
- android - 从当前项目中的另一个模块启动 MainActivity
- image - xamarin 表单列表视图图像绑定
- java - 自动委托实现方法
- c - ptrdiff_t 的使用
- wordpress - 带有 bitnami 的静态页面