Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xamarin表单集合视图自定义布局设计_Xamarin_Xamarin.forms_Xamarin.android_Xamarin.ios_Collectionview - Fatal编程技术网

Xamarin表单集合视图自定义布局设计

Xamarin表单集合视图自定义布局设计,xamarin,xamarin.forms,xamarin.android,xamarin.ios,collectionview,Xamarin,Xamarin.forms,Xamarin.android,Xamarin.ios,Collectionview,在我正在设计的应用程序中,我使用collectionview显示大量图像。这是我的 这是我的。 高度较短的图像将有下一个图像填充空白 这是我的密码: <CollectionView x:Name="cv_WallPapers" ItemsSource="{Binding Results, Mode=TwoWay}" HorizontalOptions="F

在我正在设计的应用程序中,我使用collectionview显示大量图像。这是我的

这是我的。 高度较短的图像将有下一个图像填充空白

这是我的密码:

            <CollectionView x:Name="cv_WallPapers"
                            ItemsSource="{Binding Results, Mode=TwoWay}"
                            HorizontalOptions="FillAndExpand"
                            VerticalOptions="FillAndExpand"
                            Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="2"
                            SelectionMode="Single"
                            SelectionChanged="cv_WallPapers_SelectionChanged"
                            >
                <CollectionView.ItemsLayout>
                    <GridItemsLayout Orientation="Vertical"
                                     Span="2"
                                     VerticalItemSpacing="5"
                                     HorizontalItemSpacing="5"/>
                </CollectionView.ItemsLayout>
                <CollectionView.ItemTemplate>
                    <DataTemplate>

                        <Frame Padding="4"
                               BorderColor="#34eba8"
                               BackgroundColor="#34eba8"
                               CornerRadius="10"
                               HasShadow="False">
                            <Image Source="{Binding urls.regular}"
                                   HorizontalOptions="FillAndExpand"/>
                        </Frame>

                    </DataTemplate>
                </CollectionView.ItemTemplate>
            </CollectionView>



我不知道如何在Xamarin做到这一点。谢谢你的帮助

不幸的是,表单中的CollectionView到目前为止仍然不支持这种布局。但是,我们可以在Android中使用自定义渲染器作为解决方案

public class MyCollectionViewRenderer: CollectionViewRenderer
{
    public MyCollectionViewRenderer(Context context) : base(context)
    {

    }

    protected override void OnElementChanged(ElementChangedEventArgs<ItemsView> elementChangedEvent)
    {
        base.OnElementChanged(elementChangedEvent);

        if(elementChangedEvent.NewElement!=null)
        {
            this.SetLayoutManager(new StaggeredGridLayoutManager(2, 1));
        }

    }
}
公共类MyCollectionViewRenderer:CollectionViewRenderer { 公共MyCollectionViewRenderer(上下文):基础(上下文) { } 受保护的覆盖无效OnElementChanged(ElementChangedEventArgs elementChangedEvent) { base.OnElementChanged(elementChangedEvent); if(elementChangedEvent.NewElement!=null) { 这个.SetLayoutManager(新的StaggedGridLayoutManager(2,1)); } } }
在iOS中,因为本机iOS中的UICollectionView没有这样的属性或API,所以我们需要手动实现它(重新计算每个项目的大小并设置偏移量)。你可以参考一下。我会尽快发布功能请求。

谢谢你!它在安卓系统上工作得很有魅力!非常感谢您的帮助,我期待您对IOS功能的回复!您好@LucasZhang,您知道如何在ios上执行该功能了吗?我已经将该功能请求发布到github:),我们将重点关注它。