Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xamarin形成网格大小问题_Xamarin_Xamarin.forms - Fatal编程技术网

Xamarin形成网格大小问题

Xamarin形成网格大小问题,xamarin,xamarin.forms,Xamarin,Xamarin.forms,我是Xamarin的新手,如果这很明显,请原谅 我在ContentPage中添加了一个网格。我希望网格占据整个ContentPage,我假设它是设备的完整大小。在我的例子中,我正在测试iphone6s模拟器。 第一行应为格栅总高度的7.58%,最后一行应填充其余部分。我添加标签以查看最后一行的底部位置,并在顶部显示所有位置。看起来距离顶部约7%,这意味着它是第一排的底部 <Grid x:Name="layoutGrid" HorizontalOptions="Fill" Vertica

我是Xamarin的新手,如果这很明显,请原谅

我在ContentPage中添加了一个网格。我希望网格占据整个ContentPage,我假设它是设备的完整大小。在我的例子中,我正在测试iphone6s模拟器。 第一行应为格栅总高度的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"/>  


看起来您正在将两个项目放在同一个空间中,这是网格中无法做到的。查看XAML中的第一个图像(似乎您希望在整个网格中使用它?)没有设置行和列,但默认为行/列0。然后,列跨度为3,行跨度为11(?)。您只有两行,所以这没有意义。此外,您不能将第二个图像放置在第0行第2列中,因为第一个图像已经占用了第二个图像。您可能希望将第一个图像设置为页面背景。或者使用可以覆盖项目的绝对或相对布局。据我所知,网格不允许覆盖项目。此外,您还将标签的垂直选项设置为“结束”,这将使其位于第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>

看起来您正在将两个项目放在同一个空间中,这是网格中无法做到的。查看XAML中的第一个图像(似乎您希望在整个网格中使用它?)没有设置行和列,但默认为行/列0。然后,列跨度为3,行跨度为11(?)。您只有两行,所以这没有意义。此外,您不能将第二个图像放置在第0行第2列中,因为第一个图像已经占用了第二个图像。您可能希望将第一个图像设置为页面背景。或者使用可以覆盖项目的绝对或相对布局。据我所知,网格不允许覆盖项目。此外,您还将标签的垂直选项设置为“结束”,这将使其位于第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>


谢谢您提供的信息。我本打算设置背景图像,但我的图像是嵌入的。{local:ImageResource App1.Resources.background.png}返回一个ImageSource。有没有办法将嵌入的图像设置为页面背景图像?谢谢你提供的信息。我本打算设置背景图像,但我的图像是嵌入的。{local:ImageResource App1.Resources.background.png}返回一个ImageSource。有没有办法将嵌入图像设置为页面背景图像?