Xamarin表单Android自定义渲染器无法显示

时间:2015-10-15 22:47:24

标签: android forms xamarin xamarin.android xamarin.forms

我正在尝试在Xamarin Forms应用中呈现一个复选框。在运行时没有任何渲染,只要我可以告诉渲染器甚至没有被调用。

有没有人理解我遗失或做错了什么?

这是我在Forms中的课程:

public class LegalCheckbox : View
{
    public LegalCheckbox ()
    {

    }
}

我在Droid中的自定义渲染器类:

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))]

2 个答案:

答案 0 :(得分:2)

拿起你的代码并用它启动一个新项目。代码看起来运行正常。

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

我把我在github上创建的东西扔了,也许你可以发现差异。

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

@Thibault D. Xlabs并不是一个糟糕的项目,但它基本上只是开源社区在Xamarin.Forms生命的第一年左右想出的所有代码。它不是真正的“他们的实验室项目”,并考虑到其中有多少被标记为Alpha Beta及其问题页面中的错误数量,最好不要暗示Xamarin公司与它有任何关系。

答案 1 :(得分:0)

我不确定这是否是问题,但如果LegalCheckbox继承InputView而不是View,我会更有意义。

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

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

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