Xamarin表单-如何实现最大高度功能?

cgyqldqp  于 2023-02-17  发布在  其他
关注(0)|答案(1)|浏览(125)

Xamarin Form s有一个MinimumHeight属性,但没有MaximumHeight属性。
在一个页面中,我有一个ListView,我想把它增加到最多3个条目,如果它比这个更高,我就滚动它。在网络世界中,我会简单地使用max-height属性。但是在Xamarin Forms中没有这样的属性,只有MinimumHeight属性。
那么我该如何实现我的目标呢?

r1zk6ea1

r1zk6ea11#

我知道这是几年前的问题,但我最近遇到了这个问题,它是ScrollView中的FlexLayout。我想出了一个愚蠢的解决方案,也许这可以为类似的情况提供一个视角。
本质上,你用一个StackLayout来 Package 整个东西,用来设置最大高度。然后得到一个项目的高度,并根据列表中的项目数量在代码中设置它的高度。如果你每行有一个子项,这将是非常简单的。在我的例子中,项目在FlexLayout中,因为它们的长度不同,所以行为非常随机。
因此,视图的结构为:

<StackLayout x:Name="Wrapper">
    <ScrollView>
        <FlexLayout x:Name="ItemList"
                    SizeChanged="OnItemListSizedChanged">
            // Items
        </FlexLayout>
    </ScrollView>
</StackLayout>

在代码隐藏中:

private double _itemHeight;

private void OnItemListSizedChanged(object sender, EventArgs e)
{
    var childCount = ItemList!.GetChildren().Count;

    switch (childCount)
    {
        case 1:
            _itemHeight= ItemList.Height;
            Wrapper!.HeightRequest = _itemHeight;
            
            break;
        case > 2:
            Wrapper!.HeightRequest = _itemHeight * 2;
            // You can adjust the height accordingly.
            
            break;
        case >= 3:
            Wrapper!.HeightRequest = _itemHeight * 3;
            
            break;
    }
}

对于摘牌事项,我也用了类似的方法衔接了

public Action OnItemsReduced;

当项目计数下降时收听。

private void OnItemListSizedReduced(object sender, EventArgs e)
{
    var childCount = ItemList!.GetChildren().Count;
    
    switch (childCount)
    {
        case 0:
           Wrapper!.HeightRequest = -1;
           ItemList.HeightRequest = -1;
           // Reset the elements, important

           break;
        case 1:
           Wrapper!.HeightRequest = _itemHeight;
                
           break;
        case > 2:
           Wrapper!.HeightRequest = _itemHeight * 2;
                
           break;
        case >= 3:
           Wrapper!.HeightRequest = _itemHeight * 3;
                
           break;
    }
}

我也尝试过用后一种方法来监听条目列表的增加,但效果不是很好。

相关问题