Xamarin.Forms swipe gesture recognizer

Xamarin.Forms es muy nuevo y muy emocionante, pero por ahora veo que tiene documentación limitada y algunas muestras. Estoy tratando de hacer una aplicación con una interfaz similar a la "MasterDetailPage" uno, pero también tener una vista derecha Flyout, no sólo la izquierda.

He visto que esto no es posible utilizando la API actual, y por lo que mi enfoque fue el siguiente:

  1. Cree una interfaz compartida de GestureRecognizer.
  2. En la aplicación de Android y iOS en vincular esta interfaz a la UIGestureRecognizer en iOS o el método OnTouch en el androide.

Para iOS esto está funcionando, pero para Android el oyente táctil sobre la actividad no parece funcionar.

¿Mi enfoque es bueno? Tal vez hay otro buen método para capturar eventos táctiles directamente desde el código compartido? ¿O tiene alguna idea de por qué el override público bool OnTouchEvent no funciona en AndroidActivity?

El MasterDetailPage, y otros elementos compartidos, son sólo contenedores para que los procesadores de vistas puedan recoger. La mejor opción sería crear una LRMasterDetailPage personalizada (izquierda-derecha ..) y darle propiedades tanto para el DetailLeft como para el DetailRight. A continuación, implementa un ViewRenderer personalizado por plataforma para este elemento personalizado.

El elemento:

public class LRMasterDetailPage { public View LeftDetail; public View RightDetail; public View Master; } 

El renderizador:

 [assembly:ExportRenderer (typeof(LRMasterDetailPage), typeof(LRMDPRenderer))] namespace App.iOS.Renderers { public class LRMDPRenderer : ViewRenderer<LRMasterDetailPage,UIView> { LRMasterDetailPage element; protected override void OnElementChanged (ElementChangedEventArgs<LRMasterDetailPage> e) { base.OnElementChanged (e); element = e.NewElement; // Do someting else, init for example } protected override void OnElementPropertyChanged (object sender, System.ComponentModel.PropertyChangedEventArgs e) { if (e.PropertyName == "Renderer") return; base.OnElementPropertyChanged (sender, e); if (e.PropertyName == "LeftDetail") updateLeft(); if (e.PropertyName == "RightDetail") updateRight(); } private void updateLeft(){ // Insert view of DetailLeft element into subview // Add button to open Detail to parent navbar, if not yet there // Add gesture recognizer for left swipe } private void updateRight(){ // same as for left, but flipped } } } 

Le aconsejo que utilice el enfoque de CarouselView, ya que puede utilizar soluciones ya existentes con vista de carrusel que son soporta gestos de deslizamiento. Tan en resultado su visión será envuelta en este control de la visión del carrusel

  • ¿Cómo puedo enlazar a `ItemClick` para un` MvxLinearLayout`?
  • C #: método de anulación en la inicialización
  • ¿Cuál es la contraparte de iOS 'QLPreviewController o UIDocumentInteractionController en Android?
  • Línea azul claro sobre mi barra de navegación en la aplicación de Android
  • Xamarin.Forms: El receptor de difusión no funciona cuando la aplicación está cerrada
  • NullReferenceException en modo Release de la aplicación Xamarin
  • ¿Cómo obtener Mono Xamarin carpeta de la ruta de acceso de Android?
  • Mostrar mensaje para conocer la ubicación
  • Java.lang.IllegalArgumentException: ya agregado Lokio / AsyncTimeout
  • La aplicación de Android no aparece en la tienda de juegos de algunos dispositivos
  • Xamarin pérdida de memoria Android con actividad simple
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.