Xamarin.ios 集合视图布局问题
我使用的是Xamarin.ios 集合视图布局问题,xamarin.ios,uicollectionview,Xamarin.ios,Uicollectionview,我使用的是CollectionViews,目前的问题是,每次我实现UICollectionViewFlowLayout时,我的原始布局都会被“销毁”。如果我没有实现FlowLayout,我的CollectionView只是一行,其中包含所有项目的长度,并且一切正常。但是CollectionView中的元素彼此之间的间隔非常远。要使用较小的间距,我需要实现FlowLayout,但在这样做时,我的CollectionView使用网格布局,其中的每个元素都缩小到20x20像素 我在哪里告诉FlowLa
CollectionViews
,目前的问题是,每次我实现UICollectionViewFlowLayout
时,我的原始布局都会被“销毁”。如果我没有实现FlowLayout,我的CollectionView
只是一行,其中包含所有项目的长度,并且一切正常。但是CollectionView
中的元素彼此之间的间隔非常远。要使用较小的间距,我需要实现FlowLayout,但在这样做时,我的CollectionView
使用网格布局,其中的每个元素都缩小到20x20像素
我在哪里告诉FlowLayout只使用一行,如何降低集合视图中元素之间的间距?我看到了类似的东西
ItemsLayout = new LinearItemsLayout(ItemsLayoutOrientation.Vertical)
{
ItemSpacing = 20
}
但我不知道该把密码放在哪里。有人能帮我吗/
这就是我当前的流程布局:
public class TestFlowLayout : UICollectionViewFlowLayout
{
public TestFlowLayout()
{
}
public override bool ShouldInvalidateLayoutForBoundsChange(CGRect newBounds)
{
return true;
}
public override UICollectionViewLayoutAttributes LayoutAttributesForItem(NSIndexPath indexPath)
{
return base.LayoutAttributesForItem(indexPath);
}
public override UICollectionViewLayoutAttributes[] LayoutAttributesForElementsInRect(CGRect rect)
{
return base.LayoutAttributesForElementsInRect(rect);
}
public override void PrepareLayout()
{
base.PrepareLayout();
}
public override void InvalidateLayout()
{
base.InvalidateLayout();
}
}
我还在我的ViewDidLoad
中尝试了类似的方法:
CollectionView.CollectionViewLayout = new TestFlowLayout
{
MinimumLineSpacing = 0,
MinimumInteritemSpacing = 0,
SectionInset = new UIEdgeInsets(0, 0, 0, 0),
ScrollDirection = UICollectionViewScrollDirection.Horizontal
};
但我还是得到了网格布局而不是线性布局
我还补充说
public override nint NumberOfSections(UICollectionView collectionView)
{
return 1;
}
在我的UICollectionViewDataSource中。但是什么都不起作用。原因:如果UICollectionView在一个方向上有多个单元格的空间,它将让该单元格填充它。例如,我们将UICollectionView的滑动方向设置为水平。此时,如果单元高度不足,可能会出现以下情况:
解决方案:
一般来说,要显示单行(单列),只需使单元格高度大于UICollectionView高度的1/2即可。那么一行不足以放下两个单元格,因此自然会出现单行排列:
因此,在您的情况下,只需设置UICollectionView的框架,原因:如果UICollectionView在一个方向上有多个单元格的空间,它将让单元格填充它。例如,我们将UICollectionView的滑动方向设置为水平。此时,如果单元高度不足,可能会出现以下情况:
解决方案:
一般来说,要显示单行(单列),只需使单元格高度大于UICollectionView高度的1/2即可。那么一行不足以放下两个单元格,因此自然会出现单行排列:
因此,在您的情况下,您只需要设置UICollectionView的框架,这就是解决方案。尼斯:)我添加了CollectionView.CollectionViewLayout=new TestFlowLayout{MinimumLineSpacing=-30,MinimumInItemSpacing=0,SectionInset=new UIEdgeInsets(0,0,0,0),ScrollDirection=UICollectionViewScrollDirection.Horizontal,ItemSize=new CGSize(125125)}; 它成功了。对于间距,我必须使最小行距为负数,这就是解决方案。尼斯:)我添加了CollectionView.CollectionViewLayout=new TestFlowLayout{MinimumLineSpacing=-30,MinimumInItemSpacing=0,SectionInset=new UIEdgeInsets(0,0,0,0),ScrollDirection=UICollectionViewScrollDirection.Horizontal,ItemSize=new CGSize(125125)}; 它成功了。对于间距,我必须使最小行距为负值。。