【问题标题】:How can I prevent content in a Xamarin Forms ScrollView becoming stuck when the orientation changes?当方向改变时,如何防止 Xamarin Forms ScrollView 中的内容卡住?
【发布时间】:2015-01-04 21:01:32
【问题描述】:

假设您有一个包含一些内容的 Xamarin Forms ScrollView 控件。

内容是这样的;当设备处于纵向时,它完全适合视口,但是,当设备处于横向时,它会超出视口。

问题

当您将设备旋转为横向并将内容滚动到底部,然后将其旋转回纵向时,内容不会重置且无法滚动 - 它现在卡在页面的一半。

这似乎是 Xamarin Forms 中的一个错误,因为它只发生在 iOS 而不是 Android 中。也就是说,要解决这个问题可能还需要一段时间。我正在寻找有关如何同时预防/克服这种情况的建议?可能使用自定义渲染器?

这里是重现问题的解决方案:https://github.com/afalz/ScrollViewIssue

【问题讨论】:

  • 这是固定的吗?在我的 ios 应用中也面临同样的问题

标签: c# ios xamarin xamarin.forms


【解决方案1】:

我看到您正在使用共享项目(Xamarin.Forms)。在 IOS 项目中编程时,您可以设置 ScrollView 的 ContentSize 以适应布局的变化(横向、纵向)。

ScrollView scrollview = new ScrollView();
scrollview.ContentSize = new RectangleF(x, y, screenHeight, screenWidth);

然后您可以使用覆盖 ViewDidRotate 方法并更改 ContentSize 属性。

对于您的示例,我认为您最好实现一个每次更改屏幕布局时都会调用的方法,就像 ViewDidRotate 方法一样,并将 ScrollView.Content.HeightRequest 更改为新的屏幕尺寸。

我希望这会有所帮助。祝你好运!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-15
    • 2021-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-25
    相关资源
    最近更新 更多