Xamarin.Forms - 位置元素在另一个之上。

时间:2017-09-17 19:28:25

标签: xaml xamarin xamarin.forms

我的Xamarin.Forms项目中有一个页面需要看起来像这样:

enter image description here

我可以定位红色和蓝色的盒子,没问题。但我无法弄清楚如何制作绿色的。

我使用的XAML如下:

<StackLayout HorizontalOptions="FillAndExpand">
    <StackLayout VerticalOptions="FillAndExpand" BackgroundColor="Red">   
         //I'm thinking the green box should be positioned absolutely in here or something?         
    </StackLayout>
    <StackLayout VerticalOptions="End" BackgroundColor="Blue">
        <Grid VerticalOptions="EndAndExpand">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="1*"></ColumnDefinition>
            </Grid.ColumnDefinitions>
            <Button Grid.Column="0" Text="Button" HorizontalOptions="FillAndExpand" BorderRadius="0" VerticalOptions="EndAndExpand" HeightRequest="50" TextColor="White" BackgroundColor="#85C034"></Button>
        </Grid>
    </StackLayout>
</StackLayout>

1 个答案:

答案 0 :(得分:4)

Grid是实现此行为的最佳布局控件。您可以使用*展开一行来填充,将文本标签嵌套在第一行的内容视图中,然后将第二行设置为所需的高度。

EG:

<?xml version="1.0" encoding="utf-8"?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
    xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
    xmlns:local="clr-namespace:Grids"
    x:Class="Grids.GridsPage">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="*"/>
            <RowDefinition Height="60"/>
        </Grid.RowDefinitions>
        <ContentView 
            BackgroundColor="Red" Grid.Row="0">
            <Label TextColor="Black"
                Text="Text"
                Margin="0,0,0,10"
                BackgroundColor="#00FF02"
                VerticalOptions="End"
                HorizontalOptions="Center"/>
        </ContentView>
        <ContentView BackgroundColor="Blue" Grid.Row="1"/>
    </Grid>
</ContentPage>

enter image description here