2017-03-14 59 views
0

我有一個如下的Xamarin.Forms XAML設置,但不知道爲什麼兩個StackLayout實例之間有額外的空間。我嘗試將填充設置爲0並將邊距設置爲0,但仍然存在空間,最後的StackLayout結束。Xamarin.Forms - 兩個StackLayouts之間的額外空間

<StackLayout Spacing="0" AbsoluteLayout.LayoutFlags="All" AbsoluteLayout.LayoutBounds="0,0,1,1" HeightRequest="500" Margin="0" Padding="0"> 
     <StackLayout Orientation="Horizontal" HorizontalOptions="FillAndExpand" HeightRequest="20" Margin="0" Padding="0"> 
      <Label Text="MyTest" HorizontalOptions="Center"></Label> 
     </StackLayout> 
     <StackLayout VerticalOptions="CenterAndExpand" Padding="10,0,10,0" HeightRequest="500" Margin="0"> 
      <ListView x:Name ="listView" ItemsSource="{Binding MyBinding}"> 
      <ListView.ItemTemplate> 
       <DataTemplate> 
       <ViewCell> 
        <Grid> 
        <Grid.ColumnDefinitions> 
         <ColumnDefinition Width="0.9*" /> 
         <ColumnDefinition Width="0.1*" /> 
        </Grid.ColumnDefinitions> 
        <Label Grid.Column="0" Text="{Binding MyName}" FontAttributes="Bold" VerticalTextAlignment="Center"/> 
        <Label Grid.Column="1" Text="{Binding MyValue}" FontAttributes="Bold" VerticalTextAlignment="Center"/> 
        </Grid> 
       </ViewCell> 
       </DataTemplate> 
      </ListView.ItemTemplate> 
      </ListView> 
     </StackLayout> 
     </StackLayout> 
+0

刪除'Padding =「10,0,10,0」'它是在您的堆棧佈局和最後添加填充。我會建議重新考慮一般的佈局,嘗試優化它,目前您有3個堆棧佈局,也許一個網格可以更好地滿足您的需求? – EvZ

+0

一張圖片勝過千言萬語,並會顯示_where_您看到空間並使我們更容易提供解決方案。 – Krumelur

回答

2

看來你沒有設置任何VerticalOptions到第一StackLayout,這就是爲什麼它只是包裝標籤並留下一個空的空間和你一樣CenterAndExpand其他StackLayout設置爲VerticalOption。

爲了解決這個問題,你有幾種選擇方案:

1:設置VerticalOption到FillAndExpand到StackLayout包含的ListView

<StackLayout VerticalOptions="FillAndExpand" Padding="10,0,10,0" HeightRequest="500" Margin="0"> 
     <ListView x:Name ="listView" ItemsSource="{Binding MyBinding}"> 
     <ListView.ItemTemplate> 
      <DataTemplate> 
      <ViewCell> 
       <Grid> 
       <Grid.ColumnDefinitions> 
        <ColumnDefinition Width="0.9*" /> 
        <ColumnDefinition Width="0.1*" /> 
       </Grid.ColumnDefinitions> 
       <Label Grid.Column="0" Text="{Binding MyName}" FontAttributes="Bold" VerticalTextAlignment="Center"/> 
       <Label Grid.Column="1" Text="{Binding MyValue}" FontAttributes="Bold" VerticalTextAlignment="Center"/> 
       </Grid> 
      </ViewCell> 
      </DataTemplate> 
     </ListView.ItemTemplate> 
     </ListView> 
    </StackLayout> 

2:設置VerticalOption到EndAndExpand與標籤上的第一StackLayout並將VerticalOption作爲StartAndExpand添加到帶有列表的第二個StackLayout。

<StackLayout Orientation="Horizontal" VerticalOptions="EndAndExpand" HorizontalOptions="FillAndExpand" HeightRequest="20" Margin="0" Padding="0"> 
     <Label Text="MyTest" HorizontalOptions="Center"></Label> 
    </StackLayout> 

    <StackLayout VerticalOptions="StartAndExpand" Padding="10,0,10,0" HeightRequest="500" Margin="0"> 
     <ListView x:Name ="listView" ItemsSource="{Binding MyBinding}"> 
     <ListView.ItemTemplate> 
      <DataTemplate> 
      <ViewCell> 
       <Grid> 
       <Grid.ColumnDefinitions> 
        <ColumnDefinition Width="0.9*" /> 
        <ColumnDefinition Width="0.1*" /> 
       </Grid.ColumnDefinitions> 
       <Label Grid.Column="0" Text="{Binding MyName}" FontAttributes="Bold" VerticalTextAlignment="Center"/> 
       <Label Grid.Column="1" Text="{Binding MyValue}" FontAttributes="Bold" VerticalTextAlignment="Center"/> 
       </Grid> 
      </ViewCell> 
      </DataTemplate> 
     </ListView.ItemTemplate> 
     </ListView> 
    </StackLayout> 

測試兩個,看看哪一個更適合您的設計需要爲每一個將以不同的方式將UI控制器。

希望這helps.-

+0

不錯的指針,但它們都不能用列表視圖堆疊在網格之上...對我來說沒有運氣 – makoshichi

0

你總是可以嘗試加入負邊距值。 我有一個類似的問題,我可以通過在第二個佈局中添加-5的邊距來解決。

<AbsoluteLayout HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand"> 
<StackLayout AbsoluteLayout.LayoutBounds="0,0,1,1" AbsoluteLayout.LayoutFlags="All" > 
    <StackLayout x:Name="lOne" Orientation="Horizontal" VerticalOptions="Start" /> 
    <StackLayout x:Name="lTwo" Orientation="Horizontal" Margin="-5" HorizontalOptions="CenterAndExpand" VerticalOptions="Start" Padding="10"/> 
</StackLayout> 

lTwo了,我能看到添加背景顏色時的空間。 當我爲此添加Margin =「 - 5」時,空間消失了。

0

您可以將父佈局的間距設置爲-6。 間距是設備像素中的一個值,表示每個元素之間的空間量。默認值是6.0 ....