web-dev-qa-db-fra.com

Comment utiliser les contrôles Xamarin.Form et les contrôles natifs Sur la même page

Je souhaite utiliser le contrôle Xamarin.Form dans mes contrôles de page Android natifs. Dans ma page native Android, existe-t-il un moyen de charger une page Xamarin.Form dans mon fragment Android natif ou dans LinearLayout?

Selon Xamarin c'est possible. Mais je ne trouve pas comment y parvenir.

http://xamarin.com/forms

13
Gulshan

Vous êtes probablement à la recherche d'un moteur de rendu personnalisé.

  • Dans votre projet Forms, créez une classe MyView qui hérite de View (ou d'une autre classe appropriée, dites ContentView si vous avez des vues enfant, etc.).
  • Dans votre projet Android, créez une classe de rendu MyViewRenderer qui hérite de ViewRenderer.
  • Ajoutez l'attribut à cette classe qui indique qu'il est un rendu before la déclaration d'espace de noms [Assembly: ExportRenderer (typeof(MyView), typeof(MyViewRenderer))]
  • Dans MyViewRenderer substituer OnElementChanged, appelez base.SetNativeView(ctl) où ctl est une instance de votre contrôle natif

Jetez un oeil à Le guide de Xamarin

Une autre ressource dans Les forums de Xamarin .

Après avoir examiné le problème et mis en place ma propre frontière, je dirais que VisualElementRenderer<TElement> est un meilleur outil de rendu. Si vous l'utilisez, il vous suffit de remplacer OnElementChanged, de faire NativeView.Add(customUIView) et de copier les propriétés à partir de l'instance MyView. Pour gérer les modifications dynamiques dans ces propriétés, substituez OnElementPropertyChanged et mettez à jour l'instance customUIView. 

1
Sten Petrov

Xamarin a révisé son site Web, de sorte que l'image ci-dessus est obsolète. Au fur et à mesure de l'évolution de la bibliothèque Xamarin.Forms, il est apparu qu'il devenait de plus en plus difficile de mélanger Xamarin.Forms et des vues natives spécifiques à la plate-forme. Je ne recommanderais pas cela. 

Les utilisateurs expérimentés peuvent certainement essayer, mais mes conversations avec les autres développeurs suggèrent que cela crée beaucoup de travail supplémentaire et de surcharge. La meilleure voie à suivre consiste à utiliser Xamarin.Forms exclusivement pour vos vues ou à utiliser des vues natives spécifiques à la plate-forme. 

Voici une capture d'écran de la page Xamarin.Forms de Xamarin (photo prise le 13 mai 2015):

enter image description here

1
Nick Lee

Vous pouvez créer une nouvelle Activity soutenue par Xamarin.Forms en héritant de Xamarin.Forms.Platform.Android.AndroidActivity et lancer cette nouvelle activité depuis une autre activité de votre application Xamarin.Android.

0
Stephane Delcroix