【问题标题】:Xamarin Forms: CollectionView is not working in iosXamarin Forms:CollectionView 在 ios 中不起作用
【发布时间】:2020-03-24 22:57:16
【问题描述】:

我将CollectionView 用于水平列表视图。它在 android 中运行良好,但在 ios 中,这些项目显示在另一个之上。下面附上截图:

XAML

<CollectionView 
             HeightRequest="30"
             SelectionMode="Single"
             SelectionChanged="ItemTapped"
        ItemsSource="{Binding Items}"
             x:Name="collectionview"
             ItemsLayout="HorizontalList">
             <CollectionView.ItemTemplate>
                   <DataTemplate>
                          <StackLayout Margin="5">
                                  <Label
                                       TextColor="Black"
                                       FontSize="Large"
                                       HorizontalTextAlignment="Center"
                                       VerticalTextAlignment="Center"
                                       Text="{Binding title}"/>
                             </StackLayout>
                        </DataTemplate>
                 </CollectionView.ItemTemplate>
          </CollectionView>

Xaml.cs

public async void ItemTapped(object sender, SelectionChangedEventArgs e)
        {
            var selectedItem = (e.CurrentSelection.FirstOrDefault() as MyModel);
            if (selectedItem != null)
            {
                //Do action
            }
        }

在调用 Forms.Init 之前,在 iOS 上的 AppDelegate 类和 Android 上的 MainActivity 类中添加以下代码:

Forms.SetFlags("CollectionView_Experimental");

我在 IOS 中遗漏了什么吗?

【问题讨论】:

  • 您的代码在我这边运行良好。 CollectionView 的父视图是什么?
  • @LucasZhang-MSFT Stacklayout
  • @LucasZhang-MSFT 在驱动器上上传了我的 XAML 文件。驱动链接:drive.google.com/open?id=1eTRPwq1jEDZem0xyjOmPiN3Fd1g5dUU6你能查一下吗?
  • 您的示例看起来很复杂(并且包含一些第三个库控件)。您可以创建一个包含问题的示例。您在问题上发布的代码工作正常,所以我认为可能是其他代码引起的问题。
  • @LucasZhang-MSFT 我会给你一个样本。

标签: xamarin.forms collectionview


【解决方案1】:

这似乎是 Xamarin.Forms 的一个现有问题。作为解决方法,您可以将 Xamarin.Forms 的版本更新为 4.4 pre2。

您可以查看 Xamarin.forms release notes 。

【讨论】:

    【解决方案2】:

    我建议您添加一个 LinearItemsLayout,它可以让您控制这些项目的外观:

     <CollectionView.ItemsLayout>  
     <LinearItemsLayout ItemSpacing="5" Orientation="Horizontal" />
     </CollectionView.ItemsLayout>
    

    如果您遇到任何问题,请告诉我!

    【讨论】:

    • 你有什么版本的 XF?
    • 我的 XF 版本是 4.3
    • 那么你需要清理和构建,因为这对我有用
    猜你喜欢
    • 2021-11-17
    • 2020-10-20
    • 1970-01-01
    • 2022-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-05
    • 1970-01-01
    相关资源
    最近更新 更多