如何在Xamarin Forms中部分切割ViewCell分隔线?

时间:2017-05-02 09:17:20

标签: c# xamarin.ios xamarin.forms

我正在使用ViewCell在我的表设置页面中创建行。我有一个选择Light或Dark主题的设置。

<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 };

任何人都知道如何摆脱这条线?

修改:

我希望它如下所示: enter image description here

2 个答案:

答案 0 :(得分:3)

我是xamarin的新手但是,根据this post,您需要在UITableView和UITableViewCell子类上执行此操作。

我希望这会对你有所帮助。的:)

答案 1 :(得分:0)

提前道歉,因为你已经考虑过了,但我相信你正在寻找的是TableView.SeparatorInset&#39;这适用于您的渲染器而不是您在PCL中使用的xaml。您可以在link找到关于样式表样式的文档。

E.G。

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

移动分隔符的插图将解决我在另一个关于整个表格移位的答案的评论中提到的问题。如果您已经尝试过,请告诉我,这是最简单的解决方案,但您可以选择其他选项。 (他们不是很好)。

编辑:通过创建自己的分隔符来实现目标的示例,而不是我最喜欢的分隔符,但也可以解决您已经强调的问题,因为您可以完全控制分隔符的样式。请参阅此Link