【问题标题】:CollectionView ItemsLayout vertical spacing issueCollectionView ItemsLayout 垂直间距问题
【发布时间】:2020-06-09 02:35:30
【问题描述】:

最近我通过将其 VerticalItemSpacing 属性设置为具有预设值来更改集合视图,它似乎工作正常,但只是注意到当添加一些新元素时,它与倒数第二个元素之间的间距为零,直到我滚动视图。当我再次回到最后一个元素时,它们之间的空间出现了。这是一个已知的问题?有人知道解决方法吗?

我的数据模板是内部带有 boxviews 的网格(用于模拟背景,因为框架看起来更昂贵),这是我的 ItemsLayout 属性:

<CollectionView.ItemsLayout>
    <GridItemsLayout Orientation="Vertical" VerticalItemSpacing="3" />
</CollectionView.ItemsLayout>

【问题讨论】:

  • 我在我的 xamarin 表单中对其进行了测试,如果我将这些项目添加到 CollectionView 它可以正常工作。我的 Xamarin 表单 nuget 包是 4.6.0.726 这是我正在运行的 GIF。 imgur.com/a/E2PfB1c
  • @LeonLu-MSFT 该问题似乎仅在倒数第二个元素适合屏幕(水平)时出现。我有 15 个可能的数据模板,我注意到每次出现倒数第二个适合屏幕时。
  • 你能提供一个关于这个问题的演示吗?
  • @LeonLu-MSFT 你可以在这里下载它wetransfer.com/downloads/… 你要查看的文件是 ChatPage.xaml 和 ChatPage.cs。您还会看到滚动抖动。实际上,主要问题是滚动时的性能。原因是我改变了我的方法,现在我遇到了这个间距问题。如果您也可以就此给我建议,我将不胜感激。
  • @LeonLu-MSFT 我几乎忘了告诉你:这是一个非常简单的例子,所以你只能点击发送按钮,它会添加一个水平适合屏幕的新元素(你会看到它没有空间),但如果你滚动视图,它就会出现空间。当应用程序启动时,请将所有内容滚动到底部,由于某种原因自动滚动的代码不像原始项目那样工作,也许我删除了一些关键代码。

标签: c# xamarin observablecollection


【解决方案1】:

此问题与您的DataTemplate 名称MapMsgSend 有关,请检查此行

  <BoxView Margin="-5,-5,-5,-1" Grid.Column="0" Grid.ColumnSpan="1" Grid.Row="0" Grid.RowSpan="3" CornerRadius="5" BackgroundColor="#dcf8c6" />

如果您将 Margin 设置为 "-5,-5,-5,-1" ,它将得到如下截图的结果。

如果我将边距设置为Margin="3",它的工作原理就像下面的截图一样。

【讨论】:

  • 谢谢你,里昂。你发现了问题。你认为使用框架会更好,以获得我想要的外观吗?既然你已经阅读了代码,我还会问你是否有一个技巧来避免我在滚动这几行内容时遇到的抖动。
  • 是的,我认为Frame 是更好的方式(如果您在消息中有图片和文字)
  • 关于抖动,我可以为此开一个新问题吗?这真的很烦人。提前感谢您的关注。
  • 是的,当然,如果您的应用程序有一些隐私,support.microsoft.com/en-us/supportforbusiness/… 开免费票以获得支持。
  • 不,那是免费的。
猜你喜欢
  • 2011-02-14
  • 1970-01-01
  • 1970-01-01
  • 2011-06-21
  • 2015-09-13
  • 2021-01-18
  • 1970-01-01
  • 1970-01-01
  • 2020-10-08
相关资源
最近更新 更多