Xamarin形成网格大小调整问题

时间:2016-10-31 20:10:04

标签: xamarin xamarin.forms

我是Xamarin的新手,请原谅我这是非常明显的。

我在ContentPage中添加了一个Grid。我希望网格占用整个ContentPage,我假设它是设备的完整大小。在我的情况下,我正在测试iPhone 6S模拟器。 第一行应该是网格总高度的7.58%,最后一行应该填写其余部分。我添加标签以查看最后一行底部的位置,并显示顶部的所有内容。从顶部看起来它是~7%,这意味着它是第一排的底部。

  <Grid x:Name="layoutGrid" HorizontalOptions="Fill" VerticalOptions="Fill">

<Grid.RowDefinitions>
  <RowDefinition Height=".0758*"/>
  <!-- Logo -->

  <!-- Remaining Space -->
  <RowDefinition  Height="*"/>    
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
  <ColumnDefinition Width=".154*" />
  <ColumnDefinition Width="*" />
  <ColumnDefinition Width=".154*" />
</Grid.ColumnDefinitions>

<Image Aspect="Fill" Source="{local:ImageResource App1.Resources.background.png}" Grid.ColumnSpan="3" Grid.RowSpan="11"/>
<Image Aspect="AspectFit" x:Name="settingsImage" Grid.Column="2" Grid.Row="0" Source="{local:ImageResource App1.Resources.settings-17-xxl.png}" HorizontalOptions="End"/>

<Label x:Name="lblTest" Grid.Row="1" Text="Bottom" TextColor="White" VerticalOptions="End" HorizontalOptions="Center" FontSize="18"/>  

1 个答案:

答案 0 :(得分:0)

看起来您将两个项目放在同一个空间中,而这在网格中是无法做到的。 IOW XAML中的第一个图像(看起来你想在整个网格中使用它?)没有设置行和列,但是默认为行/列0.那么你的列跨度为3,行跨度为11(?) 。你只有两行,所以没有意义。此外,您不能将第二个图像放在第0行第2列中,因为第二个图像已被第一个图像占用。您可能希望将第一个图像设置为页面背景。或使用绝对或相对布局,您可以在其中叠加项目。据我所知,网格不允许覆盖项目。您还可以将标签设置为&#34; End&#34;将它放在第1行的底部,而不是顶部。尝试使用以下XAML来查看它是否更接近您想要的内容:

<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
    xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
    xmlns:local="clr-namespace:App1"
    x:Class="App1.MainPage"
    BackgroundImage="{local:ImageResource App1.Resources.background.png}">

    <Grid x:Name="layoutGrid" HorizontalOptions="Fill" VerticalOptions="Fill">

        <Grid.RowDefinitions>
            <RowDefinition Height=".0758*"/>
             <!-- Logo -->

             <!-- Remaining Space -->
             <RowDefinition  Height="*"/>
         </Grid.RowDefinitions>
         <Grid.ColumnDefinitions>
             <ColumnDefinition Width=".154*" />
             <ColumnDefinition Width="*" />
             <ColumnDefinition Width=".154*" />
         </Grid.ColumnDefinitions>

         <Image Aspect="AspectFit" x:Name="settingsImage" Grid.Column="2" Grid.Row="0" Source="{local:ImageResource App1.Resources.settings-17-xxl.png}" HorizontalOptions="End"/>

         <Label x:Name="lblTest" Grid.Row="1" Text="Bottom" TextColor="White" VerticalOptions="Start" HorizontalOptions="Center" FontSize="18"/>
     </Grid>
</ContentPage>