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?
- Error al navegar lejos de una página con un mapa en Android, mientras que el teclado en pantalla es visible
- Cómo establecer el tamaño del mapa de bits en ZXing?
- Xamarin.Forms implementa AndHud y BTProgressHud
- AlarmManager sólo funciona en un futuro próximo
- Quitar icono de la barra de acción xamarin
- React Native v Formularios Xamarin - Elegir el entorno de la aplicación multiplataforma
- ¿Cómo puedo cambiar el color de un elemento seleccionado en un ListView?
- Cómo agregar evento de clic en la disposición o marco de pila
- Xamarin Forms Navegación de página MasterDetail causando un accidente en android , Funciona en iOS y UWP
- Xamarin Android con multidex - error en modo de depuración
- Xamarin.Forms SetHasNavigationBar causas falsas salto en PushAsync
- No puedo ejecutar la aplicación después de actualizar Xamarin.Forms
- Superposición blanca en WebView después de la actualización a AppCompat con 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.
- Fuera de memoria con imágenes en Android 5
- Android: TextView no respeta el androide: TextViewStyle usando appcompat-v7 22.1.1