将一个边界添加到ListView.Header的底部

时间:2017-08-15 23:19:22

标签: xamarin xamarin.forms

这是我到目前为止所尝试的内容:

<ListView RowHeight="50">
   <ListView.Header>
      <Grid>
         <Grid.RowDefinitions>
            <RowDefinition Height="49" />
            <RowDefinition Height="1" />
         </Grid.RowDefinitions>
         <Label Grid.Row="0" BackgroundColor="#EEEEEE" Text="ABC" />
         <BoxView Grid.Row="1" BackgroundColor="#999" HeightRequest="1" />
      </Grid>
   </ListView.Header>
   <ListView.ItemTemplate>

我原本期望看到一个顶部区域颜色EEE,而下面是一条高度为1和颜色为999的行

然而,在EEE颜色和999线之间存在约3-4像素高的白色区域。

有谁知道为什么会有这个以及如何更改它以便999线直接出现在EEE颜色区域下方?

2 个答案:

答案 0 :(得分:3)

我认为这是因为网格的默认RowSpacing值*(6)。设置<Grid RowSpacing="0">以摆脱它。

*查看更多at the source code of Grid class

尽管如此,如果您的布局与您显示的完全一致,我建议您使用StackLayout(使用Spacing="0")而不是Grid。像这样:

<StackLayout Spacing="0">
    <Label BackgroundColor="#EEEEEE" 
           Text="ABC"
           HeightRequest="49"/>
    <BoxView BackgroundColor="#999" 
             HeightRequest="1" />
</StackLayout>

结果(首先是Grid,第二个是StackLayout):

Sample

答案 1 :(得分:2)

在上面一行使用负边距,因此你的&#34; ABC&#34;行使用-6的底部边距。

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="49" />
        <RowDefinition Height="1" />
    </Grid.RowDefinitions>
    <Label Grid.Row="0" BackgroundColor="#EEEEEE" Text="ABC" Margin="0,0,0,-6" />
    <BoxView Grid.Row="1" BackgroundColor="#999" HeightRequest="1" />
</Grid>