/
CustomTextCellRenderer.cs
74 lines (62 loc) · 2.88 KB
/
CustomTextCellRenderer.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
using Android.Graphics;
using Android.Views;
using Android.Widget;
using Xamarin.Forms;
using Xamarin.Forms.Platform.Android;
using XamarinForms.CustomControls.Droid.CustomRenderer;
using XamarinForms.CustomControls.ListView;
[assembly: ExportRenderer(typeof(CustomTextCell), typeof(CustomTextCellRenderer))]
namespace XamarinForms.CustomControls.Droid.CustomRenderer
{
public class CustomTextCellRenderer : TextCellRenderer
{
private Android.Views.View _cellCore;
public CustomTextCellRenderer() : base() { }
public CustomTextCellRenderer(System.IntPtr a, Android.Runtime.JniHandleOwnership b) : base() { }
protected override Android.Views.View GetCellCore(Cell item, Android.Views.View convertView, ViewGroup parent, Android.Content.Context context)
{
var view = (CustomTextCell)item;
if (convertView == null)
{
convertView = new BaseCellView(context, item);
}
if (convertView is BaseCellView cellView)
{
cellView.SetImageVisible(false);
cellView.MainText = view.Text;
cellView.DetailText = view.Detail;
cellView.SetMainTextColor(view.TextColor);
cellView.SetDetailTextColor(view.DetailColor);
var control = ((LinearLayout)convertView);
if (control.GetChildAt(1) is LinearLayout linearLayout)
{
var mainTextView = (TextView)linearLayout.GetChildAt(0);
var detailTextView = (TextView)linearLayout.GetChildAt(1);
mainTextView.TextSize = (float)view.TextFontSize;
detailTextView.TextSize = (float)view.DetailFontSize;
var titleTypeface = Typeface.Create(view.TextFontFamily, ConvertFontAttributesToTypefaceStyle(view.TextFontAttributes));
var detailTypeface = Typeface.Create(view.DetailFontFamily, ConvertFontAttributesToTypefaceStyle(view.DetailFontAttributes));
mainTextView.Typeface = titleTypeface;
detailTextView.Typeface = detailTypeface;
}
}
return _cellCore = convertView;
}
private TypefaceStyle ConvertFontAttributesToTypefaceStyle(Enums.FontAttributes fontAttributes)
{
if (fontAttributes == Enums.FontAttributes.Bold)
{
return Android.Graphics.TypefaceStyle.Bold;
}
else if (fontAttributes == Enums.FontAttributes.BoldItalic)
{
return Android.Graphics.TypefaceStyle.BoldItalic;
}
else if (fontAttributes == Enums.FontAttributes.Italic)
{
return Android.Graphics.TypefaceStyle.Italic;
}
else return Android.Graphics.TypefaceStyle.Normal;
}
}
}