【问题标题】:Xamarin.Forms - Display all items without scrollingXamarin.Forms - 显示所有项目而不滚动
【发布时间】:2021-01-19 10:27:13
【问题描述】:

我用一个滚动视图来显示我的主页,它包含很多控件,包括2个CollectionView,我的问题是当用户向下滚动主页时​​,一旦到达CollectionView,他就会卡在CollectionView的滚动条中,我希望 CollectionView 中显示的所有项目(大约 40 个项目)没有滚动条,以便用户可以继续滚动主页并通过 CollectionView 的项目向下面的控件滚动。 我试图为 CollectionView 设置一个固定的高度,但这没有用。 另外,我发现一篇关于使用 BindableLayout 的文章,但我在某处读到它可能比 CollectionView 慢得多,并且它不支持项目布局(我使用 span="2" 在每行上显示 2 个项目彼此相邻)

【问题讨论】:

  • jpg 说了几千个字。
  • @Shaw,我附上了一张图片
  • 您可以将 CollectionView 的 Scroll Orientation 设置为 Horizo​​ntal,这样当用户滚动到 CollectionView 时就不会出现滚动问题。
  • @LucasZhang-MSFT,我找不到在 XAML 中完成此任务的方法

标签: xamarin.forms


【解决方案1】:

您可以使用 FlexLayout 的 BindableLayout。检查以下代码

<ScrollView Orientation="Vertical" BackgroundColor="LightBlue">

        //.. other elements
 
        <FlexLayout  BindableLayout.ItemsSource="{Binding XXX}" Direction="Row"
                AlignItems="Start" Wrap="Wrap" JustifyContent="SpaceAround" AlignContent="SpaceAround" >
            <BindableLayout.ItemTemplate>
                <DataTemplate>

                   //replace it with your data template
                    <StackLayout HeightRequest="100" WidthRequest="180" BackgroundColor="Red" Margin="10"  >

                        <Label Text="{Binding .}" TextColor="Black" BackgroundColor="Green" /> 

                    </StackLayout>

                </DataTemplate>
            </BindableLayout.ItemTemplate>
        </FlexLayout>

    </ScrollView> 

注意:

这样你需要将每个项目的宽度设置为小于屏幕宽度的一半。否则项目将变形到下一行。

【讨论】:

  • 我在使用 BindableLayout + FlexLayout 设置自己的布局时遇到了一些问题,我注意到有些滞后,所以我的客户决定改用 Syncfusion 的 ListView
  • 太棒了!快乐编码:)
猜你喜欢
  • 2020-09-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-08
  • 2015-07-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多