Xamarin表单集合视图自定义布局设计
在我正在设计的应用程序中,我使用collectionview显示大量图像。这是我的 这是我的。 高度较短的图像将有下一个图像填充空白 这是我的密码: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 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:),我们将重点关注它。