Xamarin две метки на каждом конце в одной строке - PullRequest
0 голосов
/ 10 марта 2019

Я реализовал просмотр списка, и в каждом элементе я хочу иметь две метки, каждая на горизонтальном конце.Но на самом деле он просто помещает две метки рядом друг с другом по левому краю.

Я читал, что, возможно, это невозможно при использовании макета стека, поскольку он не занимает больше места, чем необходимо.(Даже пробовал заполнить и заполнить, что не помогло.)

Вместо этого я должен использовать сетку.Но у меня есть опции в моем списке просмотра, такие как группировка, обновление, кэширование, постукивание, которые, как мне кажется, у меня нет в сетке?

Я хотел бы добиться успеха со списком, если это возможно.У кого-нибудь есть понимание этой проблемы с макетом?

Вот мой код 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>

Обновление:

В соответствии с просьбой у меня есть цветной фон двух надписей и макет стека.Это тот же вывод, если я использую HorizontalOptions = "End" и HorizontalTextAlignment = "End" одновременно или по одному.Кроме того, если я удаляю HorizontalOptions = "FillAndExpand" в стеке, это все тот же графический вывод.(Оранжевый цвет уже присутствовал)

Picture of app with different backgroundcolors

1 Ответ

0 голосов
/ 11 марта 2019

Возможно, вы могли бы использовать Grid вместо StackLayout и поместить каждый Label в другой столбец:

  <Grid>
  <Grid.ColumnDefinitions>
  <ColumnDefinition Width="*"></ColumnDefinition>
  <ColumnDefinition Width="*"></ColumnDefinition>
  </Grid.ColumnDefinitions>

    <Label Grid.Column="0" Text="{Binding Name}" FontAttributes="Bold" HorizontalTextAlignment="Start"/>
    <Label Grid.Column="1" Text="{Binding Start, StringFormat='{0:HH:mm}'}" FontAttributes="Bold" HorizontalTextAlignment="End"/>
  </Grid>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...