Xamarin.Forms Scrollview无法滚动

时间:2019-03-27 08:46:25

标签: c# xaml xamarin xamarin.forms

我正在创建一个在Scrollview中包含Stacklayout的应用程序。在这两者中,我都将“方向”定义为“垂直”,并将“垂直选项”定义为“ FillAndExpand”。如此处所述:https://forums.xamarin.com/discussion/20945/scrollview-in-xaml 但是该应用程序不会滚动。

<ContentPage.Content>
    <AbsoluteLayout>
        <ScrollView Orientation="Vertical"
                    VerticalOptions="FillAndExpand">
            <StackLayout Margin="{StaticResource PageMargin}"
                         AbsoluteLayout.LayoutBounds="0.0, 0.0, 1.0, 1.0"
                         AbsoluteLayout.LayoutFlags="All"
                         Orientation="Vertical"
                         VerticalOptions="FillAndExpand">

                <Label Text="Lorem Ipsum..." />
                <!--Extra Labels-->
                <Label Text="Lorem Ipsum..." />

            </StackLayout>
        </ScrollView>

        <skia:SKCanvasView x:Name="BgCanvasView"
                           PaintSurface="OnBgCanvasViewPaintSurface"
                           AbsoluteLayout.LayoutBounds="0.0, 0.0, 1.0, 1.0"
                           AbsoluteLayout.LayoutFlags="All"
                           InputTransparent="True"/>
    </AbsoluteLayout>
</ContentPage.Content>

您有什么可以尝试的想法吗?

谢谢。

编辑:我发现它与<AbsoluteLayout>有关。我创建了另一个项目来测试此问题。使用AbsoluteLayout,结果与我的应用程序相同。但是没有它,StackLayout会按预期滚动。由于AbsoluteLayout对我来说是必需的,因此由于我在SKCanvasView中绘制的背景图形,错过它不是一个选择。

编辑:嗯...我自己弄清楚了,现在感觉有点傻。 <Scrollview>缺少AbsoluteLayout.LayoutBounds和AbsoluteLayout.LayoutFlags

1 个答案:

答案 0 :(得分:1)

  • 您朝着正确的方向前进只是别忘了,如果我们要使滚动视图滚动,那么滚动视图的内容必须溢出滚动视图边界
  • 当前,您的ScrollView和StackLayout都位于AbsoluteLayout中,且AbsoluteLayout.LayoutBounds =“ All”,这意味着高度和宽度将与屏幕或父视图成比例。
  • 由于此StackLayout是ScrollView的子元素,因此永远不会超过ScrollView的边界,并且ScrollView绝不会允许您滚动屏幕。

请尝试按照以下方法实施Scrollview,这可能会有帮助

<AbsoluteLayout>
    <StackLayout AbsoluteLayout.LayoutBounds = "0,0,1,1" AbsoluteLayout.LayoutFlags = "All">
       <ScrollView HorizontalOptions="FillAndExpand" VerticleOptions="FillAndExpand">
          <StackLayout HorizontalOptions="FillAndExpand" VerticleOptions="FillAndExpand"></StackLayout>
       </ScrollView>
    </StackLayout>
    <skia:SKCanvasView x:Name="BgCanvasView"
                       PaintSurface="OnBgCanvasViewPaintSurface"
                       AbsoluteLayout.LayoutBounds="0.0, 0.0, 1.0, 1.0"
                       AbsoluteLayout.LayoutFlags="All"
                       InputTransparent="True"/>
</AbsoluteLayout>

我在计算机上尝试了相同的代码,scrollview对我来说正常工作