如何在Xamarin中设置固定列的宽度

时间:2019-04-30 16:20:55

标签: c# xaml listview xamarin xamarin.forms

我有一个ListView可以显示化学残留物,问题是当我添加特定的残留物(“ BORRAS”)时,我的色谱柱配置变得很糟糕,如下图所示。

ListView

我认为有一种用于设置列宽的术语,如何解决呢?如何使ListView看起来均匀?

我附上我的ListView.XAML:

<ListView
    SelectionMode="None"
    Margin="5,0,10,10"
    IsRefreshing="{Binding IsRefreshing}"
    HeightRequest="{Binding AltoListaResiduos}"
    SeparatorVisibility="None"  
    HasUnevenRows="true"
    ItemsSource="{Binding ListaResiduos}">

    <ListView.ItemTemplate>
        <DataTemplate>
            <ViewCell>
                <StackLayout Orientation="Horizontal"
                             VerticalOptions="FillAndExpand">

                    <Grid>
                        <Grid.ColumnDefinitions>
                            <!--NOMBRE RESIDUO-->
                            <ColumnDefinition Width="3*"/>
                            <!--CANTIDAD ESTIMADA-->
                            <ColumnDefinition Width="1.5*"/>
                            <!--NOMBRE ESTIMADA-->
                            <ColumnDefinition Width="1.5*"/>
                            <!--CANTIDAD CONTENEDOR-->
                            <ColumnDefinition Width="1.5*"/>
                            <!--NOMBRE CONTENEDOR-->
                            <ColumnDefinition Width="1.5*"/>
                        </Grid.ColumnDefinitions>

                        <Label Text="{Binding NombreResiduo}"
                               HorizontalOptions="FillAndExpand"                                                      
                               MaxLines="3"
                               VerticalTextAlignment="Center"
                               TextColor="{StaticResource das.color.texto}"
                               VerticalOptions="CenterAndExpand"
                               Grid.Column="0"
                               Margin="4,0">
                            <Label.FontSize>
                                <OnPlatform x:TypeArguments="x:Double" iOS="11" Android="11" />
                            </Label.FontSize>
                        </Label>
                        <Label Text="{Binding formattedCantidadEstimada}" 
                               HorizontalTextAlignment="End"
                               FontSize="Small" 
                               VerticalTextAlignment="Center"
                               TextColor="{StaticResource das.color.texto}"
                               VerticalOptions="CenterAndExpand"
                               Grid.Column="1"
                               Margin="4,0">
                        </Label>

                        <Label Text="{Binding Estimado}" 
                               HorizontalTextAlignment="End"
                               FontSize="Micro" 
                               VerticalTextAlignment="Center"
                               TextColor="{StaticResource das.color.texto}"
                               VerticalOptions="CenterAndExpand"
                               Grid.Column="2"
                               Margin="4,0">
                        </Label>

                        <Label Text="{Binding CantidadContenedor}" 
                               HorizontalTextAlignment="End" 
                               FontSize="Small" 
                               VerticalTextAlignment="Center"
                               TextColor="{StaticResource das.color.texto}"
                               VerticalOptions="CenterAndExpand"
                               Grid.Column="3"
                               Margin="4,0">
                        </Label>
                        <Label Text="{Binding Contenedor}" 
                               HorizontalTextAlignment="End"
                               FontSize="Micro" 
                               VerticalTextAlignment="Center"
                               TextColor="{StaticResource das.color.texto}"
                               VerticalOptions="CenterAndExpand"
                               Grid.Column="4"
                               Margin="4,0">
                        </Label>

                    </Grid>
                </StackLayout>
            </ViewCell>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

我是Xamarin.Forms的新手,希望这个问题对其他人有帮助,如何使我的列表看上去与所有浪费一样? (与名字无关)对我有帮助吗?

2 个答案:

答案 0 :(得分:1)

由于您要使用适当的列定义StackLayout,因此根本不需要Grid

这应该有助于您的网格正确地覆盖并填充整个空间

答案 1 :(得分:0)

我感觉到这种情况正在发生,因为您出于某种原因现在正在使用VerticalTextAlignment,即使Xamarin为VerticalTextAlignment指出了它,TextAlignment Properties(H,V)在它们中也都有怪异的行为。

  

获取或设置Text属性的垂直对齐方式。

我宁愿使用YAlign来代替它,因为它没有这种行为,而且Xamarin对此表示怀疑。

  

获取或设置Label绑定内Text的垂直对齐方式。

第二,当您使用网格布局时,请定义列和行,因为您已经定义了最大面积,所以永远不要使用AndExpand类型,并且不会覆盖最大面积。现在LayoutOptions文档说的是CenterAndExpand或FillAndExpand做的是

  

一个LayoutOptions结构,用于描述居中并展开的元素。

此外,只需将StackLayout保留在ViewCell中即可。{p>

Grid

想学习Xamarin表格的最佳做法吗?在此处查看我的博客:https://heartbeat.fritz.ai/techniques-for-improving-performance-in-a-xamarin-forms-application-b439f2f04156