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.
Vous êtes probablement à la recherche d'un moteur de rendu personnalisé.
View
(ou d'une autre classe appropriée, dites ContentView si vous avez des vues enfant, etc.).ViewRenderer
.[Assembly: ExportRenderer (typeof(MyView), typeof(MyViewRenderer))]
base.SetNativeView(ctl)
où ctl est une instance de votre contrôle natifJetez 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.
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):
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.