如何强制Xamarin Forms iOS标签匹配其父ScrollView的高度?

hjzp0vay  于 2023-09-28  发布在  iOS
关注(0)|答案(1)|浏览(116)

我在ScrollView中有一个标签。
ScrollView驻留在Grid中,它的Height是700。
当我用5行文本填充Label时,它的Height是250。

<ScrollView Grid.Row="1" Margin="0,4,0,4" Padding="0,4,0,4" VerticalOptions="Fill" Scrolled="sv_Scrolled">
    <Label x:Name="label" TextType="Html" BackgroundColor="Blue" Margin="16,0,16,0" Padding="30,4,30,4" LineBreakMode="WordWrap" VerticalOptions="Fill"/>
</ScrollView>

如何让Label填充ScrollView的高度?
我希望这样做的原因是,我希望蓝色BackgroundColor填充ScrollView的整个高度。
在Android中,这不是问题,但在iOS中,高度顽固地保持在250,即使我设置:

label.HeightRequest = 700;
label.MinimumHeightRequest = 700;

有什么想法吗

--更新--

我已经部分解决了这一点,延长底部填充的标签,以弥补差距的高度和修复的颜色问题。
我的问题是,现在当标签大小增加到大于ScrollView高度时,我不再需要额外的填充,所以我删除了它,ScrollView不会调整大小,差距仍然存在。
我试过:

scrollView.ForceLayout
scrollViewRenderer.SetNeedsLayout()
scrollViewRenderer.SetNeedsDisplay()

都不管用,有什么想法吗?

zz2j4svz

zz2j4svz1#

您可以直接设置ScrollView的BackgroundColor来实现您想要的 (前提是我正确理解了您的要求),而不是使用Label为ScrollView提供背景颜色:

<ScrollView
    BackgroundColor="Blue"
    Grid.Row="1"
    Margin="0,4"
    Padding="0,4"
    VerticalOptions="Fill"
    Scrolled="sv_Scrolled">

    <Label
        x:Name="label"
        TextType="Html"
        Margin="16,0"
        Padding="30,4"
        LineBreakMode="WordWrap"
        VerticalOptions="Fill"/>

</ScrollView>

如果您需要在ScrollView和背景颜色之间设置间隙,您也可以将Label放置在Grid内部,然后设置Grid的背景颜色:

<ScrollView
    Grid.Row="1"
    Margin="0,4"
    Padding="0,4"
    VerticalOptions="Fill"
    Scrolled="sv_Scrolled">

    <Grid BackgroundColor="Blue">

        <Label
            x:Name="label"
            TextType="Html"
            Margin="16,0"
            Padding="30,4"
            LineBreakMode="WordWrap"
            VerticalOptions="Fill"/>

    </Grid>

</ScrollView>

相关问题