具有peakareinset的Xamarin水平集合视图

时间:2020-07-29 16:27:35

标签: xamarin.forms

我正在使用集合视图在水平列表中显示项目,但是要注意的是,如果列表中的最后一个项目不可见,则可能还不清楚是否还有另一个项目。

与轮播不同,集合视图没有Peakareainset,您可以在其中看到一些项目,以便用户知道他们需要滚动。

如何获得在水平collectionview中总是能看到最后一点的外观?

我有什么

enter image description here

我想拥有的东西

a

如果我放 Horizo​​ntalScrollBarVisibility =“ Always”不能按预期方式工作,因为在开始移动项目之前,我看不到水平滚动。嗯

   <CollectionView  HorizontalScrollBarVisibility="Always" 
                    ItemsSource="{Binding Monkeys}"
                    ItemsLayout="HorizontalList" 
                    ItemSizingStrategy="MeasureFirstItem" 
                    HorizontalOptions="StartAndExpand">
        <CollectionView.ItemTemplate>
            <DataTemplate>
                <Grid Padding="10">
                    <Grid.RowDefinitions>
                        <RowDefinition Height="35" />
                        <RowDefinition Height="35" />
                    </Grid.RowDefinitions>
                    <Image Grid.RowSpan="2" 
                           Source="{Binding ImageUrl}" 
                           Aspect="AspectFill"
                           HeightRequest="60" 
                           WidthRequest="60" />
                </Grid>
            </DataTemplate>
        </CollectionView.ItemTemplate>
    </CollectionView>

谢谢

1 个答案:

答案 0 :(得分:0)

在Android中,您可以创建CollectionView的自定义渲染器,以使HorizontalScrollBar始终可见:

[assembly: ExportRenderer(typeof(Xamarin.Forms.CollectionView), typeof(MyCollectionViewRenderer))]    
namespace App332.Droid
{
    class MyCollectionViewRenderer : CollectionViewRenderer
    {
        public MyCollectionViewRenderer(Context context) : base(context)
        {
        }

        protected override void OnElementChanged(ElementChangedEventArgs<ItemsView> elementChangedEvent)
        {
            base.OnElementChanged(elementChangedEvent);

            this.ScrollbarFadingEnabled = false;
        }
    }
}