Xamarin形成scrollview和layoutTo不工作

时间:2014-10-23 17:14:32

标签: c# xamarin xamarin-studio xamarin.forms

我在Mac上使用Xamarin Studio创建应用。 我面临的问题是,滚动视图仅适用于最初放置的位置。

我的意思是,我的布局根据用户输入向右和向左滑动(我有两个菜单,一个在右边,另一个在左边,你得到它)。但是,如果用户没有打开任何菜单,滚动视图会正确滚动,如果用户确实滑动,则它不再起作用了!

以下是我使用Xamarin.Forms处理布局滑动的方式:

    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或类似的东西?我已尝试过这个,它也不起作用!

提前致谢!

2 个答案:

答案 0 :(得分:0)

可能值得考虑使用 Xamarin.Forms MasterDetailPage ,因为它内置滑出式功能并且运行良好,尽管我和#39;在 v1.2.2x 中使用模拟器经历了混合结果,但在设备上运行良好。

因此,您可以从 MasterDetailPage 继承而不是继承内容页面,而不是尝试编写自己的内容。

Xamarin.Forms 中当前 MasterDetailPage 实施的唯一缺点是滑出仅发生在左侧 - 手边。遗憾的是,已修复。您甚至无法指定从右侧发出的飞出,并且还有不支持 双重滑出区域,从左侧和右侧(在版本 1.2.3x 上测试)。他们可能会在稍后的版本中介绍滑出方向和可能的双滑出区域,但您需要联系 Xamarin ,了解是否可能以及此类功能的时间范围

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

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

如果你确实设法找到它们,你可以写一个自定义渲染器来使用现有的实现来轻松尝试自己重新创建一个吗?

答案 1 :(得分:0)

我设法解决了这个问题!检查我创建的github repository示例。我在DetailView.cs上面添加了一条评论,解释了我是如何做到的(当然是hacky方式!;))。

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

然而,当你展示它们并将它们滑入时,它们将按预期工作!

那么,就是这样,Xamarin.Forms双面板滑动没有任何自定义渲染!

感谢您的帮助!