2014-09-23 3 views
1

Я использую Xamarin Forms в своем проекте.Интеграция Android View как пользовательский элемент управления в Xamarin.Forms

В принципе, я хочу интегрировать custom control в свою форму. Этот компонент имеет вид Android (axml), и я не могу найти способ включить его в свой общий проект Xamarin Forms.

Я пытался создать пользовательский рендерер:

[assembly: ExportRenderer(typeof(RadialControl), typeof(RadialControlRenderer))] 
namespace EA.Indemnisation.Renderers 
{ 
    public class RadialControlRenderer : ViewRenderer 
    { 
     protected override void OnDraw(Android.Graphics.Canvas canvas) 
     { 
      base.OnDraw(canvas); 

      SetContentView(Resource.Layout.Radial); // How can I include my view as component into the form? 

      var bigRadialProgress = FindViewById<RadialProgressView>(Resource.Id.bigProgress); 
      var smallRadialProgress = FindViewById<RadialProgressView>(Resource.Id.smallProgress); 
      var tinyRadialProgress = FindViewById<RadialProgressView>(Resource.Id.tinyProgress); 
     } 
    } 
} 

Это не помогло мне, потому что я не в состоянии получить Android вид, взаимодействовать с ним и включить его в моей форме.

Я также рассмотрел, как преобразовать Android.Views.View в Xamarin.Forms.View, но я не могу найти способ сделать это.

Каков способ интеграции пользовательского элемента управления в приложение Xamarin Forms?

ответ

2

Вы начали в правильном направлении. Overrid OnElementChanged, так как там вы должны создать свой Android-вид.

Что-то вроде:

protected overrie void OnElementChanged(ElementChangedEventArgs<RadialControl> e) 
{ 
    if (Control == null) { 
     YourView yourView = new YourView(base.Context); 
     SetNativeControl(yourView); 
    } 
    // update and/or bind properties & events 
    .... 
} 

Furthermo поймать свойство RadialControl меняет вы переопределять OnElementPropertyChanged;

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