代码之家  ›  专栏  ›  技术社区  ›  DirtyNative

Xamarin.Forms FlexLayout调整到最大值

  •  0
  • DirtyNative  · 技术社区  · 7 年前

    我有一个 柔性布局 在我的Xamarin.Forms应用程序中显示一些框架。问题是,如果我 FlexLayout.Grow="1" FlexLayout.Grow="0" 每一列的末端都会有一些空白。

    A simple example

    过敏原 每列的末尾都有一点空间,当调整窗口大小时,空间会增大,直到第五个项目可以放入该列(当 FlexLayout.Grow=“0” 设置)。但如果我设置 FlexLayout.Grow=“1”

    enter image description here

                    <StackLayout Grid.Row="11">
                        <flexLayouts:ExtendedFlexLayout Margin="5,0,5,0"
                                                        Direction="Row"
                                                        Wrap="Wrap"
                                                        VerticalOptions="Start"
                                                        AlignItems="Start"
                                                        JustifyContent="Start"
                                                        ItemsSource="{Binding Allergens}">
                            <flexLayouts:ExtendedFlexLayout.ItemTemplate>
                                <DataTemplate>
                                    <details:BeverageDetailsView FlexLayout.Grow="1" />
                                </DataTemplate>
                            </flexLayouts:ExtendedFlexLayout.ItemTemplate>
                        </flexLayouts:ExtendedFlexLayout>
                    </StackLayout>
    

    有没有办法阻止剩下的项目调整到这么大的尺寸?

    1 回复  |  直到 7 年前
        1
  •  1
  •   nevermore    7 年前

    解决方案:

    widthRequest 项目的。和 将根据boxView的屏幕宽度和边距计算。

    http://stackoverflow.com/a/26504582/283974

    然后,您可以计算项目的宽度。

    screenWidth itemsInRow *2 * margin .

      float screenWidth = 375;//375 is an example ,you should use screen width in your code
      float margin = 10;
      float itemsInRow = 4;
      float widthRequest = (screenWidth - itemsInRow *2 * margin)/4; 
    

    设置 到中的项目 Xaml ,则左空间和右空间的长度将变为相同。

    widthRequest

        2
  •  0
  •   user2149714    6 年前

    我通过使用模板选择器并在集合的末尾添加几个空项来解决这个问题。模板选择器为显示项选择常规模板,为空项选择带有空网格的模板。我在视图模型中创建了集合,方法是包装可观察的集合,并让视图模型集合始终以空值的形式呈现N个以上的项。