【发布时间】:2021-01-28 09:29:07
【问题描述】:
我们的 Xamarin 表单应用使用 FlowListView 显示视频矩阵,使用自定义渲染器。
在Android应用程序中,当改变矩阵视图的大小时,每个视图元素/单元格,无论大小,都一致地先执行FlowItemDisappearing,然后执行FlowItemAppearing。效果很好。
iOS 应用程序的行为不同,只有矩阵视图中的一些元素会消失和出现。如何将此行为更改为与 Android 应用相同的行为?
在我的 iOS 应用程序中,我将渲染器中 OnElementChanged 中的事件与 FlowItemDisappearing 和 FlowItemAppearing 中的事件进行了比较,发现它们之间存在差异。例如,将矩阵大小从 3x3 更改为 1,然后从 1 更改为 3x3 后,观察到以下情况: 在 OnElementChanged 中: 3x3-1:删除第一行,添加新元素1,OK
1-3x3:在第 3 行重新创建元素 6-9。问题: 1. 不需要更新第三行; 2.元素2和3的句柄没有更新,剩下0个。
3x3-1:删除第 2 行的元素。视频在单视图中播放正常。但问题是现在元素 2-6 的句柄变为 0。这将是下一个转换 1-9 的问题。
在FlowListItem中出现/消失的事件:
3x3-1:视图索引 0-2 消失并出现 0(新元素 1),正确
1-3x3: -(3-5), +(0-2), -(6,8), +(3-5), +(6-8),这表示第 1 行中的新元素,在第 2 行和第 3 行重新创建元素。问题:它与 OnElementChanged 中的事件不匹配。似乎 OnElementChanged 错过了事件。
3x3-1:-(0-2),+(0) 新元素 1,正确
我的问题是子视图的句柄最终会不同步。如果新矩阵中的每个视图元素/单元格消失然后出现,则完全没有问题。每个图块都会被刷新。
【问题讨论】:
-
你好,你可以分享一些代码和截图来解释这个问题,这将有助于找到解决方案。
-
@Junior Jiang - MSFT 请在stackoverflow.com/questions/63107557/…找到代码和截图
标签: ios listview xamarin.forms