我实现了一个列表视图,并且在每个项目中我想要在水平方向的每个末端都有两个标签。但实际上,它只是将两个标签彼此对齐。
我读到,使用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的背景涂了彩色。如果我同时或单独使用HorizontalOptions =“ End”和HorizontalTextAlignment =“ End”,则输出相同。另外,如果我删除了stacklayout上的HorizontalOptions =“ FillAndExpand”,它仍然是完全相同的图形输出。 (橙色已经存在)