如何在Xamarin Forms中部分地削减ViewCell分隔线?

19

我正在使用ViewCell来创建表格设置页面中的行。我有一个设置可以选择浅色或深色主题。

<ViewCell Height="50">
    <StackLayout x:Name="darkTheme" VerticalOptions="FillAndExpand" Padding="20,0,20,0">
        <StackLayout Orientation="Horizontal" VerticalOptions="CenterAndExpand">
            <Label Text="Dark" XAlign="Center" FontSize="15"/>
            <Label x:Name="darkThemeCheckmark" Text="{x:Static local:FontAwesome.FACheck}" FontFamily="FontAwesome" XAlign="Center" IsVisible="false" FontSize="12" HorizontalOptions="EndAndExpand"/
        </StackLayout>
    </StackLayout>
</ViewCell>
<ViewCell Height="50">
    <StackLayout x:Name="lightTheme" VerticalOptions="FillAndExpand" Padding="20,0,20,0">
        <StackLayout Orientation="Horizontal" VerticalOptions="CenterAndExpand">
            <Label Text="Light" XAlign="Center" FontSize="15"/>
            <Label x:Name="lightThemeCheckmark" Text="{x:Static local:FontAwesome.FACheck}" FontFamily="FontAwesome" XAlign="Center" IsVisible="false" FontSize="12"/>
        </StackLayout>
    </StackLayout>
</ViewCell>
无论何时我从深色主题切换到浅色主题,我的行之间左侧都会有一个微弱的光线。请参考下面的图片: enter image description here enter image description here 在我的渲染器中,我已经设置了以下内容:
tableView.LayoutMargins = new UIEdgeInsets() { Left = 20 };
cell.SeparatorInset = new UIEdgeInsets() { Left = 20 };
cell.LayoutMargins = new UIEdgeInsets() { Left = 20 };

有谁知道如何去掉这条线?

编辑:

我想让它看起来像下面这样: 输入图片说明

2个回答

3

我是Xamarin的新手,但根据这篇文章,你需要在UITableView和UITableViewCell子类上进行操作。

希望这能帮到你。 :)


0

如果您已经考虑过这一点,我提前道歉,但我认为您正在寻找的是'TableView.SeparatorInset',它适用于您的渲染器,而不是您在PCL中使用的xaml。您可以在此link找到有关样式化表格视图的文档。

例如:

TableView.SeparatorInset.InsetRect(new CGRect(4, 4, 150, 2));

将分隔符的插入位置移动可以解决您在其他答案的评论中提到的整个表格移动的问题。如果您已经尝试过,请告诉我,这是最简单的解决方案,但您还有其他选择(它们只是不太好看)。

编辑:通过创建自己的分隔符来实现您的目标的方法示例,虽然不是我最喜欢的方法,但也可以解决您所强调的问题,因为您可以完全控制分隔符的样式。请参考此链接


谢谢。我已经尝试过这个了,但它只是将我的表格部分标题移动了位置。 - user6742877
@iamsophia,抱歉只是确认一下,你尝试过例如'TableView.SeparatorInset.InsetRect(new CGRect(4, 4, 150, 2));'吗?我问这个问题是因为这不应该对tablesection标题有任何影响。 - JoeTomks
不是那个。我已经尝试过这个:tableView.SeparatorInset = new UIEdgeInsets() { Left = 10; }; - user6742877
啊,我明白了。你可以尝试使用分隔符插图的insetRect属性,因为那应该可以实现你想要的效果。如果不行的话,我觉得你可能需要创建自己的分隔符,并将内置的分隔符可见性设置为隐藏。 - JoeTomks

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接