我有一个Xamarin.Forms XAML设置如下,但不知道为什么两个StackLayout
实例之间有额外的空间。我尝试将填充设置为0并将边距设置为0,但仍然存在空间和最后StackLayout
之间的空格。
<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 :(得分:2)
似乎你没有为第一个StackLayout设置任何VerticalOptions
,这就是为什么它只是包装Label并留下一个空的空间,因为你将另一个StackLayout设置为VerticalOption为CenterAndExpand
。
要解决此问题,您可以选择以下几个选项:
1:将VerticalOption设置为FillAndExpand到包含ListView的StackLayout
<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,使用Label和VerticalOption作为StartAndExpand将第一个StackLayout设置为带有List的第二个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控制器。
希望这会有所帮助.-
答案 1 :(得分:1)
您可以随时尝试添加负边距值。 我有一个类似的问题,我可以通过在第二个布局中添加-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>
在添加背景颜色时,我有一个空间可以看到。 当我添加Margin =“ - 5”时,空间消失了。
答案 2 :(得分:1)
您可以将父布局的间距设置为-6。 间距是设备像素中的值,表示每个元素之间的空间量。默认值为6.0 ....