【问题标题】:Frame not taking the full height Xamarin forms框架未采用全高 Xamarin 形式
【发布时间】:2019-09-17 14:39:12
【问题描述】:

我有一个 Xamarin 页面,它有一个两行一列的网格。在第一行/列中我有一个标签,第二行/列我有一个框架,它不占用行的全部高度。请问您能帮忙吗?

      <controls:GradientColorStack
        StartColor="#0cacee"
        EndColor="#0574d8"
        HorizontalOptions="FillAndExpand"
        VerticalOptions="FillAndExpand"
        GradientOreintation="Vertical">
        <Grid>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="*" />
            </Grid.ColumnDefinitions>
            <Grid.RowDefinitions>
                <RowDefinition Height="330" />
                <RowDefinition Height="*" />
            </Grid.RowDefinitions>

            <Label Grid.Column="0"
                   Grid.Row="0"
                   HorizontalOptions="FillAndExpand"
                   VerticalOptions="FillAndExpand"
                   Text="" />

            <controls:CustomFrame
                Grid.Row="1"
                CornerRadius="30,30,0,0"
                BackgroundColor="White"
                HasShadow="True"
                HorizontalOptions="FillAndExpand"
                VerticalOptions="FillAndExpand"
                Margin="12,20,12,0" />
        </Grid>
    </controls:GradientColorStack>

【问题讨论】:

  • 您可以将HeightRequest="330" 设置为CustomFrame 视图
  • 330 是第一行的高度。框架在第二行,我希望它填满其余部分。
  • CustomFrame 是视图容器。除非它没有视图或多个视图,否则它不会扩展。因此,一种解决方案是使高度静态化。
  • @RezaShirazi 将框架的背景颜色设置为显眼的颜色,例如红色,同时将框架的 Padding 设置为 0,因为框架的默认填充是 20。
  • 我将整个东西包裹在一个网格中并且工作正常。谢谢

标签: xamarin.forms xamarin.ios


【解决方案1】:

RowColumn 中有默认的 spacing

Grid 具有控制行和列间距的属性。以下属性可用于自定义 Grid:

ColumnSpacing – 列之间的空间量。此属性的默认值为 6。 RowSpacing – 行之间的空间量。此属性的默认值为 6。

您可以在此处设置RowSpacing= "0" 以获取行的全高。

<Grid BackgroundColor="Accent" RowSpacing="0">
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*" />
    </Grid.ColumnDefinitions>
    <Grid.RowDefinitions>
        <RowDefinition Height="330"/> 
        <RowDefinition Height="Auto" />
    </Grid.RowDefinitions>

    <Label BackgroundColor="Wheat" Grid.Column="0"
        Grid.Row="0"
        HorizontalOptions="FillAndExpand"
        VerticalOptions="FillAndExpand"
        Text="1111111111" />

    <Frame
    Grid.Row="1"
    BackgroundColor="White"
    HasShadow="True"
    HorizontalOptions="FillAndExpand"
    VerticalOptions="FillAndExpand"
    Margin="12,0,12,0" />
</Grid>

顺便Margin="12,20,12,0"也可以影响顶部空间,如果没有必要,可以设置这个:Margin="12,0,12,0"

【讨论】:

    【解决方案2】:

    适用于框架?

        <Frame
            BackgroundColor="Red"
            HorizontalOptions="FillAndExpand"
            VerticalOptions="FillAndExpand">
            <Grid VerticalOptions="FillAndExpand" HorizontalOptions="FillAndExpand">
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="*" />
                </Grid.ColumnDefinitions>
                <Grid.RowDefinitions>
                    <RowDefinition Height="40" />
                    <RowDefinition Height="370" />
                </Grid.RowDefinitions>
    
                <Label Grid.Column="0" 
                       BackgroundColor="GREEN"
                       Grid.Row="0"
                       HorizontalOptions="FillAndExpand"
                       VerticalOptions="Start"
                       Text="LOL" />
    
                <Frame
                    Grid.Row="1"
                    Grid.Column="0"
                    BackgroundColor="White"
                    HasShadow="True"
                    HorizontalOptions="FillAndExpand"
                    VerticalOptions="FillAndExpand"
                    Margin="12,20,12,0">
                    <StackLayout>
                        <Label Text="Text" />
                    </StackLayout>
                </Frame>
            </Grid>
        </Frame>
    

    【讨论】:

    • 我不需要那个顶框。当我将其更改为 stacklayout 时,它再次变得混乱。
    • @RezaShirazi 现在怎么样,你的身高太高了?
    • 我将顶部框架更改为网格并且工作正常。没有静态高度。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-08
    • 2020-07-04
    • 2021-02-20
    • 2013-09-05
    • 2019-04-08
    • 2011-10-02
    相关资源
    最近更新 更多