Xamarin.Forms Scrollview не будет прокручивать - PullRequest
1 голос
/ 27 марта 2019

Я создаю приложение, которое включает в себя Stacklayout внутри Scrollview. В обоих случаях я определил Ориентацию как Вертикаль, а Вертикальные параметры как 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.Layout и AbsoluteLayout.LayoutFlags

1 Ответ

1 голос
/ 27 марта 2019
  • Если вы движетесь в правильном направлении, просто не забывайте, что если мы хотим, чтобы прокрутка прокручивалась, то содержимое прокрутки необходимо переполнить границы прокрутки
  • в настоящее время ваши 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>

Я попробовал тот же код на моей машине, и прокрутка у меня работает нормально

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...