这是我到目前为止所尝试的内容:
<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颜色区域下方?
答案 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):
答案 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>