为什么我的自定义渲染器不工作?

Why is my custom renderer not working?

我的 Droid 项目中有以下 class:

using MyProject.Droid;
using Xamarin.Forms.Platform.Android;

[assembly: Xamarin.Forms.ExportRenderer(typeof(Android.Widget.Button), typeof(ArrowButtonRenderer))]
namespace MyProject.Droid
{
    public class ArrowButtonRenderer : Xamarin.Forms.Platform.Android.ButtonRenderer
    {
        protected override void OnElementChanged(ElementChangedEventArgs<Xamarin.Forms.Button> e)
        {
            base.OnElementChanged(e);
            var btn = this.Control as Android.Widget.Button;
            btn.SetBackgroundColor(global::Android.Graphics.Color.Green);
        }
    }
}

我知道,您不需要自定义渲染器来更改按钮的颜色,但我只是想尝试一下:)

干杯!

编辑:这是关于如何将按钮添加到 UI:

的代码
MyStackLayout.Children.Add(new Button
{
    Text = "My Button Text"
});

还有一些按钮通过 xaml:

<Button x:Name="btnIdk" Text="something" />

经过广泛的交谈并查看了您的资源,我发现 PCL 安装了 Xamarin.Forms 的 2.3.1.114 版本。

您的 Droid 项目安装了版本 1。5.x,所以它要旧得多!

现在下一部分会很棘手,您需要为 Android 更新 Xamarin.Forms 包。但是,如果您先更新 Xamarin.Android.Support.* 包,您将收到一条错误消息,提示您无法更新 Xamarin.Forms,因为未找到匹配的 Forms 版本。

因为 Xamarin.Forms 对于 Android 在很大程度上取决于它们链接到特定版本的支持包,但它们并不总是同步的。截至目前,Xamarin.Forms 版本 (2.3.2.127) 似乎缺少相应的 Android 支持包。所以不要升级到那个,升级到与 PCL 相同的版本,即 2.3.1.114。然后 Android 软件包将更新到 23.3.0,一切都会正常运行。