Quiero usar Xamarin.Control de formulario dentro de mi Android Nativo Controles de la Página. En mi Android nativo página es hay alguna manera de cargar un Xamarin.Página de formulario dentro de mi Android Nativo o Fragmento LinearLayout?

Según Xamarin es posible. Pero no puedo encontrar la manera de lograr esto.

Cómo utilizar Xamarin.Controles de formulario y Controles Nativos En la misma página

Hay una manera de cortar esta, en caso de que alguien todavía se necesita. Mucho más que un hack, la participación de la descompilación y copiar varias clases desde el Xamarin.Los formularios de marco, fue elaborado por mi colega, y describe en su blog. El post es, por desgracia, en ruso, pero es bastante google-traducible, y usted no necesita leer nada para copiar el código o descargar la muestra (ver una .zip a continuación el código).
Una advertencia es para siempre .Dispose() puntos de vista que se obtiene de la hackeado inflater – gestión de la memoria que se realiza normalmente por Xamarin.Las formas, y no funciona en su propia en el exterior.
Es esto todavía no es posible?

OriginalEl autor Gulshan | 2014-09-05

5 Comentarios

  1. 10

    Hay un par de cosas que se está discutiendo, así que tengan paciencia conmigo:

    La imagen del fragmento, de lo que yo entiendo:

     "Not only are Xamarin.Forms pages mixable with custom screens" ...

    Esto es como lo de @Stephane es mencionar a permitir que una aplicación para el uso de pantallas nativas así como Xamarin.Formas pantallas. Cada plataforma stub-página puede introducir un compartida Xamarin.Formas página en cualquier punto de la aplicación. Usted no tiene que usar el Xamarin.Formas Pila De Navegación.

     "but you can embed custom views built directly against Xamarin.IOS and Xamarin.Android into Xamarin.Forms pages."

    Esto es lo que @Sten es de mencionar, que si se cree específicas de la plataforma ContentRenderers usted puede hacer cualquier tipo de controles nativos en una ya existente Xamarin.Formas página, por que pasa esto comunes Ver para cada plataforma de procesador.

    Así, por ejemplo, si usted tenía un Ver:-

     public class MyView : ContentView
     {
         //Create some bindable properties here that can be used in your platform specific renderer,
         //i.e. DisplayText etc.
     }

    Puede utilizar la anterior en un Xamarin.Formas definición de página y, a continuación, crear plataforma de procesadores específicos que iba a ser llamado para representar el contenido.

    Es desde dentro de estos plataforma de contenido específico clases de procesador de que puede utilizar controles nativos en cada plataforma.

    Por ejemplo, en el ContentRenderer, para el caso de OnElementChanged se podría hacer algo como lo siguiente para WindowsPhone:-

     protected override void OnElementChanged(Xamarin.Forms.Platform.WinPhone.ElementChangedEventArgs<MyView> e)
     {
         base.onElementChanged(e);
         ...
         System.Windows.Controls.TextBox objPlatformSpecificTextBox = new System.Windows.Controls.TextBox();
         ... 
         ...

    Sin embargo, lo que @Gulshan es querer realmente creo que es para tener un nativo página que es el centro de la escena con el Xamarin.Formas contenido que están siendo prestados en un punto específico en un ya existentes nativo página.

    Su poco invertido, en el pensamiento, sin embargo, esto es todavía posible:-

    Para lograr esto es necesario para estimular la página de generación en un temporal de la nueva página.

    Por ejemplo, en WindowsPhone podría hacerlo a través de:-

            PhoneApplicationPage objInnerPage_Temp = new PhoneApplicationPage();
            UIElement objInnerContent = App.GetMainPage().ConvertPageToUIElement(objInnerPage_Temp);

    sobre la específicas de la plataforma stub-página.

    Usted puede, a continuación, inyectar la representación de los contenidos en un contenedor nativo que es apropiado en la plataforma, es decir, un Cuadrícula.

    Actualización 1:-

    ==========

    Aunque es muy fácil de hacer esto en WindowsPhone no me parece que esto es posible cuando se intenta algo similar en Android por desgracia.

    La Android la creación de páginas está muy bloqueada, es decir, que no puede acceder a la privado campos para lienzo y/o diseño que se utiliza internamente en AndroidActivity.

    Si esto era posible, entonces usted puede volver a utilizar este y tomar el contenido prestados y inyectar similar a la solución para la WindowsPhone plataforma.

    Además, el Plataforma clase está marcado como interna también, la prevención de otra manera para generar la representación de los contenidos.

    Había esperanza, yo estaba pensando en acercarse a este de un Fragmento implementación de la generación de un Actividad en ella, y esto bien podría funcionar – sin Embargo – el problema aquí es que la aplicación en Xamarin.Formas está a la espera de la ActionBar a estar a disposición de lo que no lo es, y ellos no son la comprobación de una si es null escenario para permitir que continúe la ejecución, si no se dispone de modo que se produce una excepción en la prevención de la página de generación de contenidos.

    No por lo tanto ser posible?, a menos que abra el diseño de la tela de los campos en AndroidActivity o dirección de la ActionBar expectativa problema.

    Sí soy consciente de personalizado procesador. Pero el uso de un sistema de representación, creo que solo se puede lograr mediante un nativo de controles dentro de una Xamarin.Formularios De La Página. Pero mi requisito es totalmente lo contrario. Quiero usar xamarin.Formularios de la Página dentro de algunos Controles Nativos. Si usted mira en la Actividad donde un Xamarin.Formularios de la página ha sido utilizado, No es un método «SetContentPage ()», Que tiene un XamarinForms Página como un conjunto de entrada a la totalidad de la actividad. Lo que estoy buscando es Una manera donde puedo configurar mi XamarinForm Página o Control, dentro de un Diseño o Fragement. O si puedo convertir de Xamarin.Los formularios.Ver para Android.Vistas.Vista.
    La última parte de mi respuesta hizo resaltar lo que yo creía que su verdadera intención era y propuso un enfoque. Su posible a través de WindowsPhone facilidad, sin embargo, Android está muy bloqueada. He actualizado mi respuesta para reflejar los nuevos hallazgos (ver Update 1). Donde están viendo a SetContentPage() para Android, ya que no parecen ser capaces de encontrar este método?
    Sí, muy cierto. En realidad estaba buscando un método similar en android como «ConvertPageToUIElement» en Windows Phone. He extraído el código de AndroidActivity. Y que están a la derecha de la Plataforma de la clase está marcado como interna. Por lo que se puede por ahora no es posible.

    OriginalEl autor Pete

  2. 2

    Como ya hemos comentado, es bastante simple en iOS (con .CreateViewController()) y WP (.ConvertPageToUIElement()).

    Pero en Android no todo está perdido: se puede utilizar .GetView() extensión método de http://www.arturdr.ru/android/xamarin-forms-i-slozhnosti-integratsii-v-android-prilozheniya/

    Aquí es un ejemplo sobre cómo envolver Xamarin.Formularios de la página en Android AlertDialog el uso de ese método:
    https://github.com/OlexaLe/XFPageAsAndroidDialog

    Desafortunadamente, los cambios importantes que serían necesarios para la actualización de código para que funcione con corriente de Xamarin Forms. He añadido un problema para XFPageAsAndroidDialog proyecto, describiendo brevemente lo que se necesita.

    OriginalEl autor olexa.le

  3. 1

    Usted está probablemente en busca de una costumbre procesador.

    • En su proyecto de Formularios crear una clase MyView que hereda de View (o de alguna otra clase, digamos que ContentView si tendrás niño vistas etc)
    • En su proyecto Android de crear una clase de procesador de MyViewRenderer que hereda ViewRenderer
    • Agregar el atributo a la clase que indica que es un renderizador antes de la declaración de espacio de nombres
      [assembly: ExportRenderer (typeof(MyView), typeof(MyViewRenderer))]
    • En MyViewRenderer reemplazar OnElementChanged, llamada base.SetNativeView(ctl) donde ctl es una instancia de su control nativo

    Echa un vistazo a Xamarin guía del

    Otro recurso en Xamarin Foros.

    Después de mirar el problema y la aplicación de mi propia Frontera yo diría que VisualElementRenderer<TElement> es un mejor renderizado de uso. Si el uso que todo lo que tendríamos que hacer es reemplazar OnElementChanged y hacer NativeView.Add(customUIView) y copia de propiedades de la MyView instancia. Para manejar la dinámica de los cambios en estas propiedades reemplazar OnElementPropertyChanged y actualización de la customUIView instancia

    Sí soy consciente de personalizado procesador. Pero el uso de un sistema de representación, creo que solo se puede lograr mediante un nativo de controles dentro de una Xamarin.Formularios De La Página. Pero mi requisito es totalmente lo contrario. Quiero usar xamarin.Formularios de la Página dentro de algunos Controles Nativos. Si usted mira en la Actividad donde un Xamarin.Formularios de la página ha sido utilizado, No es un método «SetContentPage ()», Que tiene un XamarinForms Página como un conjunto de entrada a la totalidad de la actividad. Lo que estoy buscando es Una manera donde puedo configurar mi XamarinForm Página o Control, dentro de un Diseño o Fragement. O si puedo convertir de Xamarin.Los formularios.Ver para Android.Vistas.Vista.
    cómo sobre una Página de Formularios que tiene el control nativo en una costumbre renderer y una NativeChild personalizado representador que puede mover su punto de vista como una subvista de los nativos? Creo que no es posible lograr esta completamente en una aplicación nativa
    Su posible en WindowsPhone, sin embargo Android es demasiado bloqueado aparece. Yo no he probado esto en iOS en la actualidad.

    OriginalEl autor Sten Petrov

  4. 1

    Xamarin revisado su sitio web, por lo que la imagen de arriba es obsoleta. Como Xamarin.En la biblioteca de formularios ha evolucionado, parece que se hizo más difícil para la mezcla de Xamarin.Formas y específicos de la plataforma nativa de vistas. Yo no recomendaría hacer esto.

    Usuarios avanzados, ciertamente, puede intentar esto, pero mis conversaciones con otros desarrolladores sugieren que esto crea una gran cantidad de trabajo y la sobrecarga. El mejor camino a seguir es el uso de Xamarin.Las formas exclusivamente para sus puntos de vista, o el uso específico de la plataforma nativa de vistas.

    Aquí está una captura de pantalla de Xamarin de Xamarin.Página de formularios (foto tomada el 13 de Mayo de 2015):

    Cómo utilizar Xamarin.Controles de formulario y Controles Nativos En la misma página

    OriginalEl autor Nick Lee

  5. 0

    Puede crear un nuevo Activity que está respaldado por Xamarin.Forms heredando de Xamarin.Forms.Platform.Android.AndroidActivity y poner en marcha esta nueva actividad de otro en su Xamarin.La aplicación de Android.

    Sí, sé que. El problema es Xamarin.Los formularios.De la plataforma.Android.AndroidActivity sólo tiene un Método SetPage(Xamarin.Los formularios.Página de página), que muestra la Xamarin.Formularios de la Página en pantalla completa. Lo que yo quiero es, en mi Actividad tengo mucho de otros nativos de Android Controles. Y entre esos Controles quiero usar mi uno de Xamarin.Formularios de la Página o Vista.

    OriginalEl autor Stephane Delcroix

Dejar respuesta

Please enter your comment!
Please enter your name here