XAML 如何使列表视图的列表项居中?

ufj5ltwl  于 2022-12-25  发布在  其他
关注(0)|答案(1)|浏览(193)

有没有办法让列表视图的列表项居中?我希望页眉只占页面列表项的整个宽度,例如800像素或屏幕的60%。等等。似乎列表希望列表项的宽度与列表及其标题相同。我试着水平居中项目,但它不工作,我不想使用边距,因为它杀死性能。任何建议?

<Grid>

        <ListView HorizontalOptions="FillAndExpand">
            <ListView.Header>
                <StackLayout HorizontalOptions="Fill"
                             BackgroundColor="Yellow"
                             HeightRequest="300">

                    <Label Text="Header"
                           FontSize="72"
                           HorizontalOptions="Center"
                           VerticalOptions="Center"
                           TextColor="Black"/>

                </StackLayout>
            </ListView.Header>

            <ListView.ItemsSource>
                <x:Array Type="{x:Type x:String}">
                    <x:String>One</x:String>
                    <x:String>One</x:String>
                    <x:String>One</x:String>
                    <x:String>One</x:String>
                    <x:String>One</x:String>
                    <x:String>One</x:String>
                    <x:String>One</x:String>
                    <x:String>One</x:String>
                    <x:String>One</x:String>
                    <x:String>One</x:String>
                    <x:String>One</x:String>
                    <x:String>One</x:String>
                    <x:String>One</x:String>
                    <x:String>One</x:String>
                    <x:String>One</x:String>
                    <x:String>One</x:String>
                    <x:String>One</x:String>
                    <x:String>One</x:String>
                    <x:String>One</x:String>
                </x:Array>
            </ListView.ItemsSource>

            <ListView.ItemTemplate>
                <DataTemplate>
                    <ViewCell>
                        <StackLayout HorizontalOptions="Center"
                                     WidthRequest="800"
                                     BackgroundColor="Green">

                            <Label Text="{Binding . }"
                                   HeightRequest="20"
                                   BackgroundColor="DimGray"
                                   HorizontalOptions="Center"
                                   TextColor="Black"/>

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

    </Grid>

utugiqy6

utugiqy61#

你不能使列表视图的项目真正居中,但你可以使它看起来像居中。
您可以尝试让stacklayout填充视图单元格,并设置标签的背景和宽度,使其看起来像中心。例如:

<ListView.ItemTemplate>
            <DataTemplate>
                <ViewCell>
                    <StackLayout HorizontalOptions="Fill">
                        <Label Text="{Binding . }"
                               WidthRequest="400"
                               HeightRequest="20"
                               BackgroundColor="Pink"                      
                               HorizontalOptions="Center"
                               TextColor="Black"
                               HorizontalTextAlignment="Center"/>
                    </StackLayout>
                </ViewCell>
            </DataTemplate>
        </ListView.ItemTemplate>

结果是:

相关问题