Custom renderings! I have two blog entries:
Android: Xamarin.Forms TableView Section Custom Title on Android
iOS: Xamarin.Forms TableView Section Custom Header on iOS
Basically, create a custom view that inherits from TableView , and then custom renderers that implement custom TableViewModelRenderer . From there, you can override the methods to get the section title header.
Here's what Android might look like:
public class ColoredTableViewRenderer : TableViewRenderer { protected override TableViewModelRenderer GetModelRenderer(Android.Widget.ListView listView, TableView view) { return new CustomHeaderTableViewModelRenderer(Context, listView, view); } private class CustomHeaderTableViewModelRenderer : TableViewModelRenderer { private readonly ColoredTableView _coloredTableView; public CustomHeaderTableViewModelRenderer(Context context, Android.Widget.ListView listView, TableView view) : base(context, listView, view) { _coloredTableView = view as ColoredTableView; } public override Android.Views.View GetView(int position, Android.Views.View convertView, ViewGroup parent) { var view = base.GetView(position, convertView, parent); var element = GetCellForPosition(position);
And on iOS:
public class ColoredTableViewRenderer : TableViewRenderer { protected override void OnElementChanged(ElementChangedEventArgs<TableView> e) { base.OnElementChanged(e); if (Control == null) return; var coloredTableView = Element as ColoredTableView; tableView.WeakDelegate = new CustomHeaderTableModelRenderer(coloredTableView); } private class CustomHeaderTableModelRenderer : UnEvenTableViewModelRenderer { private readonly ColoredTableView _coloredTableView; public CustomHeaderTableModelRenderer(TableView model) : base(model) { _coloredTableView = model as ColoredTableView; } public override UIView GetViewForHeader(UITableView tableView, nint section) { return new UILabel() { Text = TitleForHeader(tableView, section), TextColor = _coloredTableView.GroupHeaderColor.ToUIColor(), TextAlignment = UITextAlignment.Center }; } } }
source share