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

时间:2016-09-16 07:24:43

标签: button xamarin xamarin.forms custom-renderer

我的Droid-Project中有以下课程:

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" />

1 个答案:

答案 0 :(得分:1)

经过广泛的聊天并查看您的来源后,我看到PCL安装了Xamarin.Forms版本2.3.1.114。

您的Droid项目安装了1.5.x版本,所以它更老了!

现在下一部分会很棘手,你需要为Android更新你的Xamarin.Forms包。但是,如果您首先更新Xamarin.Android.Support。*软件包,则会收到错误消息,指出您无法更新Xamarin.Forms,因为找不到匹配的Forms版本。

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