Форма xamarin: гибкий макет, как соответствовать содержимому, которое больше контейнера - PullRequest
0 голосов
/ 15 февраля 2019
<FlexLayout Direction="Row" JustifyContent="Start">

                    <circle:CircleImage
                        BackgroundColor="Blue"
                        Style="{StaticResource profileStyle}"
                        Source="{Binding TeacherSource}">
                    </circle:CircleImage>

                    <FlexLayout 

                        FlexLayout.Grow="1"
                        Direction="Column" 
                        BackgroundColor="Red" 
                        JustifyContent="SpaceEvenly">

                        <Label Text="{Binding TeacherName}"    Style="{DynamicResource ListItemTextStyle}"></Label>
                        <Label Text="{Binding TeacherEmail}"   Style="{DynamicResource ListItemTextStyle}"></Label>
                        <Label Text="{Binding TeacherMobile}"  Style="{DynamicResource ListItemTextStyle}"></Label>
                        <Label Text="{Binding TeacherHome}"    Style="{DynamicResource ListItemTextStyle}"></Label>
                        <Label Text="{Binding TeacherWork}"    Style="{DynamicResource ListItemTextStyle}"></Label>

                    </FlexLayout>

                </FlexLayout>

Приведенный выше xaml был создан внутри таблицы данных, используемой в просмотре списка.Я могу показать содержимое, но последний ярлык не расширяет flexlayout, чтобы соответствовать всему содержанию.

изображение ниже:

enter image description here

1 Ответ

0 голосов
/ 18 февраля 2019

Я попробовал ваш код и не нашел решения, позволяющего flexlayout автоматически расширяться.Я попытался ForceUpdateSize , но не повезло.

Если есть только один FlexLayout, он будет работать:

<FlexLayout 
             FlexLayout.Grow="1"
             Direction="Column" 
             BackgroundColor="Red" 
             JustifyContent="SpaceEvenly">

             <Label Text="{Binding TeacherName}"    Style="{DynamicResource ListItemTextStyle}"></Label>
             <Label Text="{Binding TeacherEmail}"   Style="{DynamicResource ListItemTextStyle}"></Label>
             <Label Text="{Binding TeacherMobile}"  Style="{DynamicResource ListItemTextStyle}"></Label>
             <Label Text="{Binding TeacherHome}"    Style="{DynamicResource ListItemTextStyle}"></Label>
             <Label Text="{Binding TeacherWork}"    Style="{DynamicResource ListItemTextStyle}"></Label>    
    </FlexLayout>

И я найду Workaroud :

Измените flexLayout на StackLayout, тогда оно будет работать:

<FlexLayout Direction="Row" JustifyContent="Start">

          <Image Source="Images"></Image>

           <StackLayout Orientation="Vertical">

                <Label Text="{Binding Name}"></Label>
                <Label Text="{Binding Image}"></Label>
                <Label Text="{Binding Image}"></Label>
                <Label Text="{Binding Image}"></Label>
                <Label Text="{Binding Image}"></Label>        
           </StackLayout>

 </FlexLayout>

Не забудьте установить listView HasUnevenRows = "True" ине устанавливать rowheight.

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...