Listview分隔符插入全宽

时间:2017-05-03 20:57:47

标签: listview xamarin xamarin.ios xamarin.forms

令我惊讶的是,在这个特定问题上我还没有在网上找到任何东西。我试图让listview分隔符插入为全宽。我已经找到了关于tableview的文档,here。但是我不清楚如何为列表视图执行此操作?我正在使用Xamarin Forms listview,尝试在iOS上完成此操作。我想我必须编写一个自定义渲染器,因为在listview的表单上没有(公开暴露的)属性。

这是我在列表视图中发生的好照片,尽管所显示的图像来自关于tableview的SO问题,而不是listview,但问题似乎是相同的。

enter image description here

4 个答案:

答案 0 :(得分:7)

我设法使用自定义渲染器使列表视图分隔符变为全宽。

在iOS 11上测试。

[assembly: ExportRenderer(typeof(CustomListView), typeof(CustomListViewRenderer))]
namespace MasterDetailNav1.iOS.CustomRenderers
{
    public class CustomListViewRenderer : ListViewRenderer
    {
        protected override void OnElementChanged(ElementChangedEventArgs<ListView> e)
        {
            base.OnElementChanged(e);

            if (Control != null)
            {
                Control.SeparatorInset = UIEdgeInsets.Zero;
            }
        }
    }
}

答案 1 :(得分:3)

您是正确的,没有通过Xamarin表单ListView(最终renders as a UITableView on iOS)公开的属性来更改分隔符宽度。如果您想自己更改分隔符,则必须使用自定义渲染器并实现您在其他SO问题中找到的内容。

作为解决方法,您可以禁用分隔符可见性,然后添加1个高度的BoxView来模拟全宽分隔符。

答案 2 :(得分:1)

现在它已随Xamarin Forms 3.0内置:

https://docs.microsoft.com/en-us/xamarin/xamarin-forms/platform/platform-specifics/consuming/ios#setting-the-separator-style-on-a-listview

只需在SeparatorStyle上将Default设置为FullWidthListView(请注意,这是iOS专用平台,默认情况下Android会使用全角):

<ListView ios:ListView.SeparatorStyle="FullWidth"/>

答案 3 :(得分:-1)

分隔符全角:

<ListView ios:ListView.SeparatorStyle="FullWidth"/>

列表视图中的分隔符颜色属性

&当视图单元格中没有内容时删除分隔符

https://xamgirl.com/quick-trick-remove-extra-separator-line-in-listview-xamarin-forms-ios/