【问题标题】:Xamarin.Forms Scrollview won't scrollXamarin.Forms Scrollview 不会滚动
【发布时间】:2019-03-27 08:46:25
【问题描述】:

我正在创建一个在 Scrollview 中包含 Stacklayout 的应用程序。在两者中,我都将方向定义为垂直,将 VerticalOptions 定义为 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>

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

提前谢谢你。

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

编辑:嗯...我自己想通了,现在感觉有点笨。 &lt;Scrollview&gt; 缺少 AbsoluteLayout.LayoutBounds 和 AbsoluteLayout.LayoutFlags

【问题讨论】:

    标签: c# xaml xamarin xamarin.forms


    【解决方案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" VerticalOptions="FillAndExpand">
              <StackLayout HorizontalOptions="FillAndExpand" VerticalOptions="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>
    

    我在我的机器上尝试了相同的代码,并且滚动视图对我来说工作正常

    【讨论】:

      猜你喜欢
      • 2014-08-14
      • 1970-01-01
      • 2016-12-15
      • 2013-10-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多