CollectionView在iOS上获得了意想不到的高度

u3r8eeie  于 2023-05-23  发布在  iOS
关注(0)|答案(2)|浏览(175)

在将Xamarin.iOS更新到最新版本后,我意识到将CollectionView放入StackLayoutVerticalOptions = FillAndExpand会导致它占用无限的垂直空间,并最终排除iOS和MacCatalyst上放置的任何其他控件。如果我尝试删除FillAndExpand选项,它将占用预期的空间,但不会滚动到末尾。我怎样才能实现正确的行为保持下面的控件定位?

llew8vvj

llew8vvj1#

  • StackLayout* 扩展选项FillAndExpandis deprecated in MAUI所有其他*AndExpand变体也是如此。它们在Xamarin.Forms中很流行,但最终在. NETMAUI中不再起作用,因此应该尽可能避免。

此外,*AndExpand选项从未应用于 StackLayout 以外的任何其他布局。它们在Xamarin.Forms和.NET MAUI中的 GridRelativeLayoutAbsoluteLayout 中没有任何效果。
如果你需要一个项目来填充定义的空间,你应该使用 Grid,然后设置VerticalOptions="Fill"

<Grid
    RowDefinitions="*"
    HeightRequest="300">

    <CollectionView
        Grid.Row="0"
        VerticalOptions="Fill"
        ItemsSource="{Binding MyItems}" />

</Grid>

这将创建一个具有特定高度和单行的 Grid,占用 Grid 的所有可用空间。然后,放置在 Grid 中的 CollectionView 将填充其父级提供的可用空间。

***重要提示:**当Grid具有其VerticalOptions="Fill"而不是定义固定的HeightRequest时,这也有效,但是,请确保它不包含在可滚动视图(如 ScrollView)中,因为在这种情况下,可用空间几乎是无限的。

vulvrdjw

vulvrdjw2#

为了使CollectionView的尺寸正确,并防止它在iOS上占用太多的垂直空间(并最终排除下面的所有控件),它需要嵌套到GridVerticalOptions = FillAndExpand中。这将使CollectionView滚动到最后,也将允许下面的任何其他控件按预期显示在View中。

相关问题