【发布时间】:2021-08-13 13:27:23
【问题描述】:
我正在尝试使用水平滚动来实现 CarouselView 控件。 我正在使用 Xamarin.Forms 5.0.0.2012。
这是 xaml 代码:
<CarouselView x:Name="carViewArticoliAlt"
Loop="False"
ItemsSource="{Binding ListaProdottiAlt}"
IndicatorView="indicatorView"
IsVisible="{Binding ArticoliAlt}"
HeightRequest="200"
PeekAreaInsets="100">
<CarouselView.ItemsLayout>
<LinearItemsLayout Orientation="Horizontal"
SnapPointsAlignment="Start"
SnapPointsType="Mandatory"
ItemSpacing="20" />
</CarouselView.ItemsLayout>
<CarouselView.ItemTemplate>
<DataTemplate>
<Frame HasShadow="True" BorderColor="LightGray"
CornerRadius="5" Padding="5"
HeightRequest="310"
HorizontalOptions="Center"
VerticalOptions="CenterAndExpand" >
<Frame.GestureRecognizers>
<TapGestureRecognizer
Tapped="TapGestureRecognizer_Tapped"/>
</Frame.GestureRecognizers>
<Grid>
<StackLayout x:Name="stkArticoloAlt">
<ImageButton x:Name="ImageArt"
Source="{Binding ImageArt}"
Aspect="AspectFit"
HeightRequest="80"
Clicked="ImageArt_Clicked"
BackgroundColor="White"/>
<Label Text="{Binding Descrizione}"
Style="{StaticResource labelDescrizioneStyle}"
MaxLines="3" LineBreakMode="TailTruncation"
HeightRequest="55"
FontSize="15"/>
</StackLayout>
</StackLayout>
</Grid>
</Frame>
</DataTemplate>
</CarouselView.ItemTemplate>
</CarouselView>
<IndicatorView x:Name="indicatorView"
IndicatorColor="LightGray"
SelectedIndicatorColor="DarkGray"
HorizontalOptions="Center" />
在 Android 平台上控件渲染良好,但在 iOS 上抛出以下异常:Objective-C 异常抛出。名称:NSInternalInconsistencyException 原因:流布局中不支持负尺寸。 我遵循了本教程: https://docs.microsoft.com/it-it/xamarin/xamarin-forms/user-interface/carouselview/scrolling
我注意到异常的原因是 PeekAreaInsets 属性。事实上,如果我不处理此属性,则不会发生异常。但是,控件未正确绘制,因为选项卡重叠。 Android 代码继续正常运行。
如图所示,卡片都是重叠的,即使 LinearItemsLayout.Orientation 设置为水平。
【问题讨论】:
标签: ios xaml xamarin.forms