Xamarin窗体滚动视图和布局To不工作

本文关键字:To 工作 布局 窗体 滚动 视图 Xamarin | 更新日期: 2023-09-27 18:27:32

我正在Mac上使用Xamarin Studio创建一个应用程序。我面临的问题是滚动视图只能在最初放置的地方工作。

我的意思是,我有一个根据用户输入左右滑动的布局(我有两个菜单,一个在右边,另一个在左边,你明白了)。然而,如果用户没有打开任何菜单,滚动视图就会正确滚动,如果用户滑动了,它就不再工作了!

以下是我如何处理Xamarin的布局滑动。表格:

    public void toggle(){
        Rectangle oldBounds = (Parent as RelativeLayout).Bounds;
        oldBounds.X = -oldBounds.Width/ 3 * (_toggled?0:1);
        (Parent as RelativeLayout).LayoutTo (oldBounds, 600, (_toggled?Easing.CubicOut:Easing.SpringOut));
        _toggled = !_toggled;
    }

我可能需要调用什么函数?例如,forceLayout或类似的东西?我试过这个,但也不管用!

提前感谢!

Xamarin窗体滚动视图和布局To不工作

使用Xamarin.FormsMasterDetailPage可能值得考虑,因为它内置了滑出功能,并且运行良好,尽管我在v1.2x中使用模拟器时遇到了混合结果,但在设备上运行良好。

因此,您可以从MasterDetailPage继承,而不是从内容页中继承,这样会更容易实现,而不是尝试编写自己的内容页。

Xamarin.Forms中当前MasterDetailPage实现的唯一缺点是滑出仅发生在左侧。不幸的是,已修复。您甚至无法指定从右侧飞出,而且不支持滑出区域,从左侧和右侧(在1.2.3x版本上进行了测试)。他们可能会在稍后的版本中引入滑出方向和可能的双滑出区域,但您需要就此联系Xamarin,了解是否有可能以及此功能的时间框架。

在您当前的实现中,似乎有一些东西阻碍了ScrollView执行正常操作,而且由于您在页面上的操作方式,这一点并不明显。

Android上有双滑块的实现,但我还没有寻找iOS,更不用说WindowsPhone了。

如果你真的找到了它们,你也许可以编写一个自定义的渲染器来使用现有的实现,以方便自己重新创建一个?

我设法解决了这个问题!通过一个例子查看我创建的github存储库。我在DetailView.cs的顶部添加了一条评论,解释我是如何做到的(当然是一种技巧!;))。

基本上,我将它们并排放置在填充所有主页面的布局中,然后使用LayoutTo更改布局宽度,以便隐藏侧菜单。

然后,当你给他们看,也就是把他们滑进去时,他们会像预期的那样工作!

就是这样,Xamarin。在没有任何自定义渲染的情况下形成双面板滑动!

谢谢你的帮助!