Xamarin.Forms салфетки распознавания жестов

Xamarin.Forms очень новый и очень интересный, но на данный момент я вижу, что он имеет ограниченную документацию и несколько образцов. Я пытаюсь создать приложение с интерфейсом, похожим на «MasterDetailPage», но также имеющим правильный вид «Просмотр», а не только левый.

Я видел, что это невозможно с использованием текущего API, поэтому мой подход:

  1. Создайте общий интерфейс GestureRecognizer.
  2. В Android-приложении и iOS свяжите этот интерфейс с UIGestureRecognizer на iOS или с методом OnTouch на Android.

Для iOS это работает, но для Android сенсорный прослушиватель по активности, похоже, не работает.

Мой подход хорош? Может быть, есть еще один хороший способ захвата событий касания непосредственно из общего кода? Или у вас есть идеи, почему public override bool OnTouchEvent не работает в AndroidActivity?

MasterDetailPage и другие общие элементы – это просто контейнеры для визуализации рендеринга. Лучше всего было бы создать пользовательский LRMasterDetailPage (слева направо) и дать ему свойства как для DetailLeft, так и для DetailRight. Затем вы создаете пользовательский ViewRenderer для платформы для этого настраиваемого элемента.

Элемент:

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

Средство визуализации:

 [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 } } } 

Я советую вам использовать подход CarouselView, и вы можете использовать уже существующие решения с карусельным представлением, которые поддерживают жесты жесты. Таким образом, ваше представление будет включено в этот контроль над карусели

Intereting Posts
GetDrawingCache () возвращено Растровое изображение не обновляется Каковы наилучшие методы для архитектуры Android-приложений на основе местоположения? Пользовательские вкладки Android Chrome / Fitbit API не будут перенаправляться, если приложение уже разрешено. (OAuth 2.0) Полноэкранный HTML5-видео на мобильных браузерах (Android) PorterduffXfermode: очистить раздел растрового изображения Неожиданное поведение LayerDrawable при рисовании слоев, содержащих InsetDrawable MediaPlayer с эффектом объемного звучания? Ежедневное уведомление Android Как передать http-образ напрямую в twitter в android? Можно ли изменить агент пользователя в Crosswalk Android / Tizen-Apps? Как добавить ресурс библиотеки в проект Cordova? «Сообщение не найдено» предупреждений в strings.xml SSLHandshakeException на Android 4.4 и ниже Разрешение, требуемое при использовании намерения для вызова телефона? Изменить фильтр AutoCompleteTextView с "startsWith" на "Contains"?