Xamarin Carousel View: Выровнять центр текущего элемента, когда он достигает пика? - PullRequest
1 голос
/ 30 января 2020

У меня есть представление Xamarin Carousel с довольно высоким значением PeakAreaInsets, так что я могу видеть сразу несколько элементов в списке. Тем не менее, я замечаю, что текущий элемент, если он настроен на привязку, больше выравнивает его по верху страницы, когда я хочу, чтобы он привязывался к центру страницы. Как я могу выполнить sh это?

Вот фрагмент кода, о котором идет речь:

<ContentPage.Content>
    <CarouselView ItemsSource="{Binding Days}"
                          CurrentItem="{Binding SelectedDay}"
                          VerticalOptions="Center"
                          HorizontalOptions="Center"
                          PeekAreaInsets="300"
                          x:Name="DayCarousel">
                <CarouselView.ItemsLayout>
                    <LinearItemsLayout SnapPointsAlignment="Center"
                                       SnapPointsType="Mandatory"
                                       Orientation="Vertical"/>
                </CarouselView.ItemsLayout>
                <CarouselView.ItemTemplate>
                    <DataTemplate>
                        <StackLayout Spacing="0"
                                     Orientation="Vertical"
                                     HorizontalOptions="Center"
                                     VerticalOptions="Center"
                                     Margin="30,10">
                            <Label Text="{Binding FormattedDate}"
                                   HorizontalOptions="Center"
                                   VerticalOptions="Center"
                                   Style="{StaticResource LabelStyle}"/>
                            <Label Text="{Binding TitleText}"
                                   HorizontalOptions="Center"
                                   VerticalOptions="Center"
                                   Style="{StaticResource LabelHeader1Style}"/>
                            <StackLayout.GestureRecognizers>
                                <TapGestureRecognizer Command="{Binding BindingContext.SelectDay, Source={x:Reference this}}"
                                                      CommandParameter="{Binding .}"/>
                            </StackLayout.GestureRecognizers>
                        </StackLayout>
                    </DataTemplate>
                </CarouselView.ItemTemplate>
            </CarouselView>
</ContentPage.Content>

Вот как это выглядит сейчас (просто макет):

enter image description here

И вот как бы я хотел, чтобы это выглядело так:

enter image description here

1 Ответ

1 голос
/ 31 января 2020

Я немного поиграл с этим. Я не уверен, как это будет выглядеть на других форматах и ​​размерах телефонов, так как я еще не проверял это. Но в конце концов я нашел счастливую среду после настройки PeakAreaInsets и настройки SnapPointsAlignment. В настоящее время у меня установлено PeakAreaInsets = 350 и SnapPointsAlignment="Start"

...