Xamarin表单:如何更改listview活动微调器颜色
如何更改Xamarin.Forms.ListView的活动指示器微调器的颜色,特别是针对iOS 我发现关于这个问题,但定制渲染器在这一点上对我来说太先进了,我还不能真正理解它们 使用第二个链接,我在iOS项目中使用给定代码创建了一个类,并在PCL项目中创建了一个类,以便可以从我的XAML视图中引用它:Xamarin表单:如何更改listview活动微调器颜色,listview,xamarin.forms,renderer,custom-renderer,Listview,Xamarin.forms,Renderer,Custom Renderer,如何更改Xamarin.Forms.ListView的活动指示器微调器的颜色,特别是针对iOS 我发现关于这个问题,但定制渲染器在这一点上对我来说太先进了,我还不能真正理解它们 使用第二个链接,我在iOS项目中使用给定代码创建了一个类,并在PCL项目中创建了一个类,以便可以从我的XAML视图中引用它: namespace spinnerTest { public class ColoredRefreshListView : ListView { } } 为了方便起见,我
namespace spinnerTest
{
public class ColoredRefreshListView : ListView
{
}
}
为了方便起见,我找到了以下代码:
public class ColoredRefreshListViewRenderer : ListViewRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<ListView> e)
{
base.OnElementChanged(e);
var vc = ((UITableViewController)ViewController);
if (vc?.RefreshControl != null)
vc.RefreshControl.TintColor = UIColor.FromRGB(135, 200, 21);
}
}
公共类ColoredRefreshListViewRenderer:ListViewRenderer
{
受保护的覆盖无效OnElementChanged(ElementChangedEventArgs e)
{
基础。一个要素发生变化(e);
var vc=((UITableViewController)ViewController);
如果(vc?.RefreshControl!=null)
vc.RefreshControl.TintColor=UIColor.FromRGB(13520021);
}
}
虽然XAML使用自定义控件成功编译,但颜色不变
有什么提示吗?我不知道你是否找到了解决方案,但你的方法只有在你拉刷新时才起作用(不是在第一次加载时) 仅缺少渲染器的命名空间属性:
[程序集:ExportRenderer(typeof(ListView)、typeof(ColoredRefreshListViewRenderer))]
命名空间Test.iOS.Renderers
{
公共类ColoredRefreshListViewRenderer:ListViewRenderer
{
受保护的覆盖无效OnElementChanged(ElementChangedEventArgs e)
{
基础。一个要素发生变化(e);
var vc=((UITableViewController)ViewController);
如果(vc?.RefreshControl!=null)
vc.RefreshControl.TintColor=UIColor.FromRGB(13520021);
}
}
}
注意:如果要将渲染器作为默认值应用于
ListView
,则必须在ExportRender()
中指定ListView
类型。取而代之的是使用您定义的基本类型(ColoredRefreshListView
,在您的示例中),但在这种情况下,您必须在XAML中显式声明此类型,而不仅仅是ListView
基本类型。我不知道您是否找到了解决方案,但您的方法只有在拉入刷新时才起作用(不是在第一次加载时)
仅缺少渲染器的命名空间属性:
[程序集:ExportRenderer(typeof(ListView)、typeof(ColoredRefreshListViewRenderer))]
命名空间Test.iOS.Renderers
{
公共类ColoredRefreshListViewRenderer:ListViewRenderer
{
受保护的覆盖无效OnElementChanged(ElementChangedEventArgs e)
{
基础。一个要素发生变化(e);
var vc=((UITableViewController)ViewController);
如果(vc?.RefreshControl!=null)
vc.RefreshControl.TintColor=UIColor.FromRGB(13520021);
}
}
}
注意:如果要将渲染器作为默认值应用于
ListView
,则必须在ExportRender()
中指定ListView
类型。取而代之的是使用您定义的基类型(ColoredRefreshListView
,在您的示例中),但是在这种情况下,您必须用XAML显式声明此类型,而不仅仅是ListView
基类型。Woah,这是过去的爆炸。IIRC,我基本上按照您所描述的做了,并将其用作自定义控件(不是默认控件)。我可能也大错特错了,但我认为它是在后来的表单版本中修复的。哇,这是过去的爆炸。IIRC,我基本上按照您所描述的做了,并将其用作自定义控件(不是默认控件)。我可能也大错特错了,但我认为它是在后来的表单版本中修复的。
[assembly: ExportRenderer(typeof(ListView), typeof(ColoredRefreshListViewRenderer))]
namespace Test.iOS.Renderers
{
public class ColoredRefreshListViewRenderer : ListViewRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<ListView> e)
{
base.OnElementChanged(e);
var vc = ((UITableViewController)ViewController);
if (vc?.RefreshControl != null)
vc.RefreshControl.TintColor = UIColor.FromRGB(135, 200, 21);
}
}
}