Cómo establecer un atributo de id de android en Xamarin.Forms?

Necesito acceder a las vistas creadas por Xamarin.Forms fuera del código Xamarin.Forms compartido.

Cómo establecer un atributo de id de android en Xamarin.Forms?

Una forma de obtener el identificador de Android es a través de un procesador personalizado. Por ejemplo, en caso de que la vista en cuestión fuera un Xamarin.Forms.Editor, podría agregar un renderizador personalizado a su aplicación de la siguiente manera:

En primer lugar, en su proyecto Xamarin.Forms, agregue una clase que derive de la vista que le gustaría obtener la identificación de:

namespace MyApp { public class CustomEditor : Editor { } } 

Tenga en cuenta que esta clase no agrega nuevos miembros, solo está ahí para definir un nuevo tipo al que necesitaremos asociar el renderizador personalizado.

A continuación, en su proyecto de Xamarin Android, agregue el renderizador personalizado y asocie con su tipo de vista personalizado:

 using System; using MyApp; using Xamarin.Forms; using Xamarin.Forms.Platform.Android; [assembly: ExportRenderer(typeof(CustomEditor), typeof(CustomEditorRenderer))] namespace MyApp.Android { class CustomEditorRenderer : EditorRenderer { protected override void OnElementChanged(ElementChangedEventArgs<Xamarin.Forms.Editor> e) { base.OnElementChanged(e); int androidId = this.Id; // android widget id Guid xamarinId = e.NewElement.Id; // xamarin view id } } 

Dentro de ese procesador personalizado ahora tiene acceso al widget Android subyacente que está asociado con la vista Xamarin Forms. Esto significa que puede obtener en la propiedad Android .id también.

Tenga en cuenta:

  • Para que esto funcione, en su interfaz de usuario Xamarin.Forms, necesitará usar su CustomEditor en lugar de la clase stock Editor
  • No todas las vistas de Xamarin Forms tienen renderizadores personalizados de los que puede derivar. Algunos, como ListViewRenderer son clases internas y no admiten heredar en su código. En estos casos no puede utilizar esta técnica.
  • Xamarin.Droid causando errores de compilación en Visual Studio 2015 cuando se utiliza Xamarin.Forms
  • Cómo ocultar Android ActionBar en Xamarin.Forms?
  • ¿Cómo detectar Golpe izquierdo y Golpe derecho para Stacklayout en Xamarin.Forms?
  • Xamarin.Forms ListView OutOfMemoryError excepción en Android
  • Xamarin.Forms: El receptor de difusión no funciona cuando la aplicación está cerrada
  • ¿Puedo diseñar la interfaz de usuario en Xamarin.Forms mediante XAML
  • Error de compilación: Error con el proyecto de Android en Xamarin.Forms
  • Obtenga el contexto de Android en el proyecto PCL
  • Xamarin Forms Android App Crashes ejecutando Debug con VS Android emulador
  • El mensaje de la nube de Google 'Not Registered' falla y se cancela la suscripción de las mejores prácticas?
  • Botón de acción flotante en Xamarin.Forms
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.