【问题标题】:Image Will Not Aspect Fit/Fill While Inside ScrollView图像在 ScrollView 内时不适合/填充
【发布时间】:2023-03-08 10:32:01
【问题描述】:

我有一个定义了几行的网格。在这些行之一中是单个 ScrollView。那个 ScrollView 有一个 Grid,里面有一个 Image 用作一个部分的一种背景图像。无论我做什么,我都无法在父网格中填充图像、AspectFill 或 AspectFit(我也尝试过 StackView 无济于事)。如果我消除 ScrollView 并将 Grid 和 Image 拉出,则 Image 将适合或填充就好了。

这是我正在做的一个精简示例:

<Grid ColumnSpacing="0" RowSpacing="0">
    <Grid.RowDefinitions>
        <RowDefinition Height="48"/>
        <RowDefinition Height="4"/>
        <RowDefinition Height="*"/>
    </Grid.RowDefinitions>
    <Grid Grid.Row="0"> ... </Grid>
    <Grid Grid.Row="1"> ... </Grid>
    <ScrollView Orientation="Vertical" HorizontalOptions="FillAndExpand" 
        VerticalOptions="FillAndExpand" Grid.Row="2">
            <Grid HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand">
            <!-- THIS IMAGE WILL NOT FILL! -->
                <Image Source="{local:EmbeddedImage  Project.Mobile.Images.fieldBackground.png}" Aspect="Fill" />
            </Grid>
    ... More Code ...
    </ScrollView>
</Grid>

无论我做什么,图像都不会填充网格父级。如果我删除 ScrollView,它可以像这样正常工作,但是如果没有 ScrollView,我就无法做到这一点,因为我在下面有更多内容无法显示在屏幕上。

<Grid ColumnSpacing="0" RowSpacing="0">
    <Grid.RowDefinitions>
        <RowDefinition Height="48"/>
        <RowDefinition Height="4"/>
        <RowDefinition Height="*"/>
    </Grid.RowDefinitions>
    <Grid Grid.Row="0"> ... </Grid>
    <Grid Grid.Row="1"> ... </Grid>
    <Grid Grid.Row="2" HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand" >
    <!-- THIS IMAGE FILLS FINE! -->
        <Image Source="{local:EmbeddedImage  Project.Mobile.Images.fieldBackground.png}" Aspect="Fill" />
    </Grid>
</Grid>

作为一种解决方法,我尝试不调整/填充图像,而是将其锚定在网格的顶部并让它水平填充。但是无论我尝试什么,除了垂直居中之外,我无法让图像以任何其他方式适合网格内。如果我将 Grid 设置为图像的确切高度,它几乎可以工作,但它在 iOS 和 Android 之间看起来不同。这似乎是一件很简单的事情?我错过了什么?到目前为止,我已经在这上面浪费了几个小时。

谢谢, 任何帮助表示赞赏!

【问题讨论】:

    标签: xamarin xamarin.forms


    【解决方案1】:

    我会将背景图像放在滚动视图之外(下方)。 如果将两个元素放在网格的同一行/列中,它们将重叠。 第一个孩子在 Z 堆栈的后面,第二个孩子放在它上面,依此类推。

    <Grid ColumnSpacing="0" RowSpacing="0">
        <Grid.RowDefinitions>
            <RowDefinition Height="48"/>
            <RowDefinition Height="4"/>
            <RowDefinition Height="*"/>
        </Grid.RowDefinitions>
        <Grid Grid.Row="0"> ... </Grid>
        <Grid Grid.Row="1"> ... </Grid>
    
        <Image Grid.Row="2" Source="{local:EmbeddedImage  Project.Mobile.Images.fieldBackground.png}" Aspect="Fill"  />
    
        <ScrollView Orientation="Vertical" HorizontalOptions="FillAndExpand" 
            VerticalOptions="FillAndExpand" Grid.Row="2">
    
            ... Insert your elements here ...
        </ScrollView>
    </Grid>
    

    【讨论】:

    • 欣赏评论。我实际上确实需要背景图像来滚动滚动视图的内容。它具有特定的设计,其他数据元素位于顶部和下方,而其他元素没有任何背景。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-30
    • 1970-01-01
    相关资源
    最近更新 更多