项目

时间:2015-11-10 21:52:18

标签: xamarin xamarin.android xamarin.forms

我的ListView在他们的孩子之前和之后都添加了大量的填充。

例如,我的主人

中有以下ListView
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:viewModel="clr-namespace:ViewModel;assembly=App"
             x:Class="Pages.Master"
             Title="Menu">
  <ContentPage.BindingContext>
    <viewModel:MasterViewModel />
  </ContentPage.BindingContext>

  <ListView ItemsSource="{Binding Pages}"
            ItemSelected="ListView_OnItemSelected"
            BackgroundColor="Red">
    <ListView.ItemTemplate>
      <DataTemplate>
        <ViewCell>
          <Label Text="S" BackgroundColor="White" />
        </ViewCell>
      </DataTemplate>
    </ListView.ItemTemplate>
  </ListView>
</ContentPage>

它呈现以下内容:

只要稍微滚动一下,它就会显示第一个元素(即顶部红色空间等于高度)

同样,您可以继续滚动,直到最后一项完全消失(即底部红色空间等于高度)

我没有改变代码中任何视图的属性/样式 - 它都是在XAML中完成的,那为什么前后有这么大的空间呢?

1 个答案:

答案 0 :(得分:1)

对ListView.Header和ListView.Footer的渲染似乎存在问题

我将以下内容添加到我的列表视图XAML中,并删除了巨型填充:

<ListView.Header>
  <StackLayout HeightRequest="0" />
</ListView.Header>
<!-- ItemTemplate -->
<ListView.Footer>
  <StackLayout HeightRequest="0" />
</ListView.Footer>

由于此问题影响了我的所有列表视图,我选择在App.xaml中将其添加为全局应用样式:

<Style TargetType="ListView">
  <Setter Property="Header">
    <Setter.Value>
      <StackLayout HeightRequest="0" />
    </Setter.Value>
  </Setter>
  <Setter Property="Footer">
    <Setter.Value>
      <StackLayout HeightRequest="0" />
    </Setter.Value>
  </Setter>
</Style>