gpt4 book ai didi

c# - 如何使用自定义渲染器更改 TableSection 文本颜色 - Xamarin.Forms C#

转载 作者:太空宇宙 更新时间:2023-11-03 13:50:19 25 4
gpt4 key购买 nike

我有一个 TableView,在根目录中有 3 个 TableSection:

var tableView = new TableView
{
RowHeight = 60,
Root = new TableRoot
{
firstTableSection,
secondTableSection,
thirdTableSection,

}
}

var firstTableSection = new TableSection("First")
{
// Cells
}

var firstTableSection = new TableSection("First")
{
// Cells
}

var firstTableSection = new TableSection("First")
{
// Cells
}

如何使用自定义渲染器更改 TableSection 文本的文本颜色?

public class TestTableViewRenderer : Xamarin.Forms.Platform.Android.TableViewRenderer
{
protected override void OnElementChanged(Xamarin.Forms.Platform.Android.ElementChangedEventArgs<Xamarin.Forms.TableView> e)
{
base.OnElementChanged(e);

// Not sure how to add this property here

}
}

最佳答案

我最终使用了这个解决方案:

https://forums.xamarin.com/discussion/32379/changing-the-title-color-of-a-tablesection

它依赖于两个自定义渲染器:

[assembly: ExportRenderer(typeof(TableView), typeof(CustomTableView))]
namespace APP.Droid
{
public class CustomTableView : TableViewRenderer
{
protected override TableViewModelRenderer GetModelRenderer(global::Android.Widget.ListView listView, TableView view)
{
return new CustomTableViewModelRenderer(this.Context, listView, view);
}

}
}

[assembly: ExportRenderer(typeof(TableViewModelRenderer), typeof(CustomTableViewModelRenderer))]
namespace APP.Droid
{
public class CustomTableViewModelRenderer : TableViewModelRenderer
{
public CustomTableViewModelRenderer(Context Context, global::Android.Widget.ListView ListView, TableView View)
: base(Context, ListView, View)
{ }
public override global::Android.Views.View GetView(int position, global::Android.Views.View convertView, ViewGroup parent)
{
var view = base.GetView(position, convertView, parent);

var element = this.GetCellForPosition(position);

if (element.GetType() == typeof(TextCell))
{
try
{
var text = ((((view as LinearLayout).GetChildAt(0) as LinearLayout).GetChildAt(1) as LinearLayout).GetChildAt(0) as TextView);
var divider = (view as LinearLayout).GetChildAt(1);

text.SetTextColor(Android.Graphics.Color.Rgb(50, 50, 50));
divider.SetBackgroundColor(Android.Graphics.Color.Rgb(150, 150, 150));
}
catch (Exception) { }
}

return view;
}
}
}

关于c# - 如何使用自定义渲染器更改 TableSection 文本颜色 - Xamarin.Forms C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35855286/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com