Xamarin删除TableSection顶部边框

时间:2016-06-29 20:24:28

标签: c# xamarin xamarin.forms tableview

是否可以去除xamarins TableSection的顶部蓝色边框(或至少改变其颜色):

http://imgur.com/btnlrMa

我查看了Xamarin TableView文档,但我发现没有任何帮助: https://developer.xamarin.com/guides/xamarin-forms/user-interface/tableview/

我的代码目前看起来像这样:

public class UserProfilePushNotification : TableView
    {
        public UserProfilePushNotification(string text) : base()
        {
            Intent = TableIntent.Data;
            Root = new TableRoot
            {
                new TableSection
                {
                    new SwitchCell
                    {
                        Text = text
                    },
                    new TextCell()
                    {
                        Text = string.Empty
                    },
                    new TextCell
                    {
                        Text = "Android Version: 1.2.1"
                    }
                }
            };
        }
    }

1 个答案:

答案 0 :(得分:1)

我正在深入研究这个问题,我发现TableView已经实现(在默认渲染器中)为ListViewTableSection只是Listview中的正常项目,第一项。

如果您不使用Title中的TableSection财产(在这种情况下您不使用它),则可以隐藏它。

为此,我为TableView创建了一个自定义呈现,并隐藏了ListView的第一个元素:

[assembly:ExportRenderer(typeof(Project.MenuTableView), typeof(Project.Droid.MenuTableViewRenderer))]
namespace Project.Droid
{
    public class MenuTableViewRenderer : TableViewRenderer
    {    
        private bool _firstElementAdded = false;

        protected override void OnElementChanged (ElementChangedEventArgs<TableView> e)
        {
            base.OnElementChanged (e);

            if (Control == null)
                return;

            var listView = Control as Android.Widget.ListView;    
            listView.ChildViewAdded += (sender, args) => 
            {    
                if (!_firstElementAdded)
                {    
                    args.Child.Visibility = ViewStates.Gone;    
                    _firstElementAdded = true;    
                }

            };
            // Uncomment this if you want to remove all the dividers from the table.
            //listView.DividerHeight = 0;    
        }    
    }
}