Xamarin每行两端分别有两个标签

时间:2019-03-10 19:51:32

标签: xaml xamarin.forms

我实现了一个列表视图,并且在每个项目中我想要在水平方向的每个末端都有两个标签。但实际上,它只是将两个标签彼此对齐。

我读到,使用stacklayout可能无法做到这一点,因为它所占用的空间不会超过所需的空间。 (甚至尝试填充和fillandExpand都没有帮助。)

相反,我应该使用网格。但是我在列表视图中有一些选项,例如分组,刷新,缓存,点击,我想我没有这些选项吗?

如果可能的话,我想以列表视图成功。有人对此布局问题有见识吗?

这是我的xaml代码:

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
         xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
         x:Class="MyApp.Page.ItemsTest">
<ListView  x:Name="ItemView" 
                ItemsSource="{Binding ItemGroup}"
                CachingStrategy="RecycleElement"
                IsGroupingEnabled="true"
                HasUnevenRows="True"
                ItemTapped="Handle_ItemTapped">
    <ListView.GroupHeaderTemplate>
        <DataTemplate>
            <ViewCell>
                <StackLayout BackgroundColor="#FFA500" Orientation="Vertical" Padding="10">
                    <StackLayout Orientation="Horizontal">
                        <Label Text="{Binding Heading}" TextColor="White" FontAttributes="Bold" />
                    </StackLayout>
                </StackLayout>
            </ViewCell>
        </DataTemplate>
    </ListView.GroupHeaderTemplate>
    <ListView.ItemTemplate>
        <DataTemplate>
            <ViewCell>
                <StackLayout Orientation="Horizontal" Padding="10" HorizontalOptions="FillAndExpand">
                    <Label Text="{Binding Name}" FontAttributes="Bold" HorizontalTextAlignment="Start"/>
                    <Label Text="{Binding Start, StringFormat='{0:HH:mm}'}" FontAttributes="Bold" HorizontalTextAlignment="End"/>
                </StackLayout>
            </ViewCell>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>
</ContentPage>

中央部分是这个

<StackLayout Orientation="Horizontal" Padding="10" HorizontalOptions="FillAndExpand">
     <Label Text="{Binding Name}" FontAttributes="Bold" HorizontalTextAlignment="Start"/>
     <Label Text="{Binding Start, StringFormat='{0:HH:mm}'}" FontAttributes="Bold" HorizontalTextAlignment="End"/>
</StackLayout>

更新:

根据要求,我给两个标签和stacklayout的背景涂了彩色。如果我同时或单独使用Horizo​​ntalOptions =“ End”和Horizo​​ntalTextAlignment =“ End”,则输出相同。另外,如果我删除了stacklayout上的Horizo​​ntalOptions =“ FillAndExpand”,它仍然是完全相同的图形输出。 (橙色已经存在)

Picture of app with different backgroundcolors

0 个答案:

没有答案