2016-09-16 2 views
0

У меня есть следующий класс в моем 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); 
     } 
    } 
} 

Я знаю, вам не нужно пользовательский визуализатор для изменения цвета кнопки щелкните кнопку, но я просто хочу попробовать вещи :)

Ура!

Edit: Вот код, о том, как добавить кнопки на интерфейсе:

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

И некоторые кнопки через XAML:

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

Попробуйте изменить этот 'typeof (Android.Widget.Button)' на кнопку Xamarin Forms, поэтому 'typeof (Xamarin.Forms.Button)' –

+0

Не работает, кнопка имеет еще цвет из моего стиля/темы :( – jdstaerk

+0

Когда вы ставите точку останова там, вообще-то попадаете? –

ответ

1

После обширного чата и глядя на свои источники I» что PCL имеет версию 2.3.1.114 Xamarin.Forms.

Ваш проект Droid имеет версию 1.5.x, поэтому он намного старше!

Теперь следующая часть будет сложной, вам нужно обновить пакет Xamarin.Forms для Android. Но если вы сначала обновите пакеты Xamarin.Android.Support. *, Вы получите сообщение об ошибке, в котором вы не сможете обновить Xamarin.Forms, потому что не найдено подходящей версии форм.

Поскольку Xamarin.Forms для Android сильно зависит от пакетов поддержки, они связаны с конкретной версией, но они не всегда синхронизированы. На данный момент версия Xamarin.Forms (2.3.2.127), похоже, не соответствует соответствующим пакетам поддержки Android. Поэтому не обновляйтесь до этого, обновляйтесь до той же версии, что и ваш PCL, который равен 2.3.1.114. Затем пакеты Android будут обновлены до 23.3.0, и все будет хорошо работать.

Смежные вопросы