【问题标题】:Why is my custom renderer not working?为什么我的自定义渲染器不起作用?
【发布时间】:2017-01-24 08:29:09
【问题描述】:

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

【问题讨论】:

  • 尝试将此 typeof(Android.Widget.Button) 更改为 Xamarin 表单按钮,因此 typeof(Xamarin.Forms.Button)
  • 没用,按钮仍然是我的风格/主题的颜色:(
  • 当你在那里放一个断点时,它会被击中吗?
  • 本可以早点尝试的,抱歉...但是不,断点(在 base.OnElementChanged(e);)没有被击中:/
  • 我必须在 Xamarin Portable 项目中添加更多内容吗?我正在通过 C# 添加按钮。

标签: button xamarin xamarin.forms custom-renderer


【解决方案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,一切都会正常运行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多