Android 的 Xamarin Forms 自定义渲染器未显示

Xamarin Forms Custom Renderer for Android not displaying

我正在尝试在 Xamarin Forms 应用程序中呈现一个复选框。据我所知,渲染器甚至没有被调用,在运行时没有渲染任何东西。

有人知道我遗漏了什么或做错了什么吗?

这是我的 class 表单:

public class LegalCheckbox : View
{
    public LegalCheckbox ()
    {

    }
}

还有我在 Droid 中的自定义渲染器 class:

public class CheckBoxRenderer : ViewRenderer<LegalCheckbox, CheckBox>
{
    protected override void OnElementChanged (ElementChangedEventArgs<LegalCheckbox> e)
    {
        base.OnElementChanged (e);
        CheckBox control = new Android.Widget.CheckBox(this.Context);
        control.Checked = false;
        control.Text = "I agree to terms";
        control.SetTextColor (Android.Graphics.Color.Rgb (60, 60, 60));
        this.SetNativeControl(control);
    }
}

与汇编指令一起:

[assembly: ExportRenderer(typeof(demo.LegalCheckbox), typeof(demo.Droid.CheckBoxRenderer))]

我不确定这是否是问题所在,但如果您的 LegalCheckbox 继承自 InputView 而不是 View 对我来说会更有意义。

此外,即使 Xamarin.Forms 没有 Checkbox 控件,您仍然可以在此处查看他们的 "Labs" 项目:

https://github.com/XLabs/Xamarin-Forms-Labs/wiki/Checkbox-Control

(我实际上可以看到它们继承自 View...)

获取您的代码并用它启动一个新项目。代码似乎运行良好。

我认为唯一可能导致您出现问题的是程序集属性的位置。我通常将它们放在与我的渲染器相同的文件中的命名空间声明之上。

我把我创建的东西扔到我的 github 上,也许你能看出区别。

https://github.com/DavidStrickland0/Xamarin-Forms-Samples/tree/master/RendererDemo

@Thibault D。 Xlabs 不是一个糟糕的项目,但它基本上只是开源社区在 Xamarin.Forms 生命的第一年左右提出的所有代码。它不是真的 "Their Labs projects",考虑到其中有多少标有 Alpha Beta 以及问题页面中的错误数量,最好不要暗示 Xamarin 公司与它有任何关系。