gpt4 book ai didi

ios - Xamarin.Forms(iOS项目):ListView分隔符显示在所有屏幕中

转载 作者:行者123 更新时间:2023-12-01 17:36:23 26 4
gpt4 key购买 nike

我有一个带有默认SeparatorVisibility的ListView。如果ItemsSource中有元素,我的Android项目将显示Separator,并在最后一个元素下方停止显示它。这是我想要的iOS项目的结果。

但是,在我的iOS项目中,无论我有多少元素,屏幕上都充满了分隔符,即使我没有元素或只有一个,分隔符仍然存在。

有人可以给我一个原因,如何解决?谢谢。

最佳答案

我想你可以看看this post

这些是一些技巧

首先禁用默认分隔符,这是通过将以下属性添加到ListView XAML来完成的

SeparatorColor="Transparent"

之后,将完整的ViewCell内容包装在一个Double StackLayout中!我知道这听起来有些矫kill过正,但是这样您就不会遇到有关ViewCell内边距或其他内容的任何BoxView问题。
第一个StackLayout应该将BackgroundColor设置为您想要分隔符的颜色,第二个StackLayout应该与它所在的容器的其余部分具有相同的BackgroundColor……在我们的示例页面中,该颜色设置为白色。确保还要在第二个StackLayout的底部添加一个Margin,因为这将代表分隔符的厚度!

我认为您可以使用此“边距” ...当您的数据为空时,请删除边距,这样就不必使用分隔符
<ListView x:Name="SeparatorListView"
SeparatorColor="Transparent"
ItemsSource="{Binding Persons}"
Margin="0,20,0,0"
RowHeight="60"
HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand"
BackgroundColor="White"
Grid.Row="1">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell IsEnabled="false">
<StackLayout VerticalOptions="FillAndExpand" HorizontalOptions="FillAndExpand"
BackgroundColor="Black">
<StackLayout VerticalOptions="FillAndExpand" HorizontalOptions="FillAndExpand"
BackgroundColor="White"
Margin="0,0,0,0.4">
<StackLayout VerticalOptions="CenterAndExpand" HorizontalOptions="FillAndExpand" Spacing="0">
<Label Text="{Binding FullName}" TextColor="Maroon" VerticalOptions="CenterAndExpand" Margin="20,0,20,0" />
<Label Text="{Binding Profession}" TextColor="Maroon" VerticalOptions="CenterAndExpand" Margin="20,0,20,0" />
</StackLayout>
</StackLayout>
</StackLayout>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>

设置好后,您将获得与本博客文章右上方的预览图像相同的视觉效果。

另外,如果页面的背景颜色不是白色,则可以省略其中的StackLayouts。因为如果是这种情况,则可以通过在ListView中播放透明度来将该颜色用作分隔色。

例如,仅在页面本身也将BackgroundColor设置为Olive时,注释才会起作用!
<ListView x:Name="SeparatorListView"
SeparatorColor="Transparent"
ItemsSource="{Binding Persons}"
Margin="0,20,0,0"
RowHeight="60"
HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand"
BackgroundColor="Olive"
Grid.Row="1">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell IsEnabled="false">
<StackLayout BackgroundColor="#f4eac3"
Padding="0,5,0,5"
HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand">
<StackLayout BackgroundColor="Transparent"
HorizontalOptions="FillAndExpand" VerticalOptions="CenterAndExpand"
Spacing="0"
Margin="20,0,20,0">
<Label Text="{Binding FullName}" TextColor="Maroon" VerticalOptions="CenterAndExpand" />
<Label Text="{Binding Profession}" TextColor="Maroon" VerticalOptions="CenterAndExpand" />
</StackLayout>
</StackLayout>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>

关于ios - Xamarin.Forms(iOS项目):ListView分隔符显示在所有屏幕中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43845606/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com