Xamarin.Forms是非常新的,非常令人兴奋,但是现在我看到它有限的文档和一些样本。我尝试使用类似于" MasterDetailPage"的界面制作应用程序。一个,但也有一个正确的Flyout视图,而不仅仅是左侧视图。
我已经看到使用当前的API无法做到这一点,所以我的方法是:
对于iOS来说,这是有效的,但对于Android,触摸监听器对活动似乎不起作用。
我的方法好吗?也许还有另一种直接从共享代码捕获触摸事件的好方法?或者你有什么想法为什么公共覆盖bool OnTouchEvent不能在AndroidActivity中工作?
答案 0 :(得分:0)
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
}
}
}
答案 1 :(得分:0)
我建议你使用CarouselView方法,例如。您可以使用已有的轮播视图解决方案,这些解决方案支持滑动手势。因此,在结果中,您的视图将被包装到此轮播视图控件
中答案 2 :(得分:0)
对于Xamarin.Forms滑动手势识别器,添加SwipeGestureRecognizer
<BoxView Color="Teal" ...>
<BoxView.GestureRecognizers>
<SwipeGestureRecognizer Direction="Left" Swiped="OnSwiped"/>
</BoxView.GestureRecognizers>
</BoxView>
以下是等效的C#代码:
var boxView = new BoxView { Color = Color.Teal, ... };
var leftSwipeGesture = new SwipeGestureRecognizer { Direction = SwipeDirection.Left };
leftSwipeGesture.Swiped += OnSwiped;
boxView.GestureRecognizers.Add(leftSwipeGesture);
有关更多信息,请点击此处:https://docs.microsoft.com/en-us/xamarin/xamarin-forms/app-fundamentals/gestures/swipe