展开式ViewCell中的网格背景无法完全覆盖iOS上的ViewCell

时间:2018-10-29 20:21:09

标签: ios xamarin xamarin.forms xamarin.ios

我正在尝试创建一个可扩展的ListView,但是我在iOS上的背景色存在问题,因为它不适合ViewCell。
它可以在Android和UWP上正常工作。

我尝试了一些不同的方法。

第一种方法是

<Grid BackgroundColor="LightGray" HorizontalOptions="FillAndExpand" Margin="5" VerticalOptions="FillAndExpand">
   <Grid.ColumnDefinitions>
      <ColumnDefinition Width="Auto" />
      <ColumnDefinition Width="*" />
   </Grid.ColumnDefinitions>
   <Label Grid.Column="0" Grid.Row="0" Text="DEL" />
   <StackLayout Grid.Column="1" HorizontalOptions="FillAndExpand" Orientation="Vertical" VerticalOptions="Start">
      <Grid HorizontalOptions="FillAndExpand" VerticalOptions="Start">
         <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*" />
            <ColumnDefinition Width="Auto" />
         </Grid.ColumnDefinitions>
         <Grid.RowDefinitions>
            <RowDefinition Height="Auto" />
            <RowDefinition Height="Auto" />
         </Grid.RowDefinitions>
         <StackLayout Grid.Column="0" Grid.Row="0" Orientation="Vertical" VerticalOptions="Start">
            <Label LineBreakMode="TailTruncation" Text="{Binding Description}" />
            <Label Text="{Binding ProjectReference}" />
            <Label Text="{Binding CustomerName}" />
         </StackLayout>
         <Label Grid.Column="1" Grid.Row="0" Text="{Binding Amount}" />
         <Grid Grid.Column="0" Grid.Row="1" Grid.ColumnSpan="2" IsVisible="{Binding IsMoreInfoAvailable}">
            <Grid.ColumnDefinitions>
               <ColumnDefinition Width="*" />
               <ColumnDefinition Width="Auto" />
            </Grid.ColumnDefinitions>
            <Grid.GestureRecognizers>
               <TapGestureRecognizer Command="{Binding ChangeMoreInfoCommand}" />
            </Grid.GestureRecognizers>
            <Label Grid.Column="0" Text="More info" />
            <Label Grid.Column="1" Text="{Binding MoreInfoIcon}" />
         </Grid>
      </Grid>
      <StackLayout IsVisible="{Binding ShowMoreInfo}" VerticalOptions="Start">
         <Label Text="{Binding Address}" />
      </StackLayout>
   </StackLayout>
</Grid>

这是另一种方法

<Grid BackgroundColor="LightGray" HorizontalOptions="FillAndExpand" Margin="5" VerticalOptions="FillAndExpand">
   <Grid.ColumnDefinitions>
      <ColumnDefinition Width="Auto" />
      <ColumnDefinition Width="*" />
   </Grid.ColumnDefinitions>
   <Grid.RowDefinitions>
      <RowDefinition Height="*" />
      <RowDefinition Height="Auto" />
   </Grid.RowDefinitions>
   <Label Grid.Column="0" Grid.Row="0" Text="DEL" />
   <Grid Grid.Column="1" Grid.Row="0" HorizontalOptions="FillAndExpand" VerticalOptions="Start">
      <Grid.ColumnDefinitions>
         <ColumnDefinition Width="*" />
         <ColumnDefinition Width="Auto" />
      </Grid.ColumnDefinitions>
      <Grid.RowDefinitions>
         <RowDefinition Height="Auto" />
         <RowDefinition Height="Auto" />
      </Grid.RowDefinitions>
      <StackLayout Grid.Column="0" Grid.Row="0" Orientation="Vertical" VerticalOptions="Start">
         <Label LineBreakMode="TailTruncation" Text="{Binding Description}" />
         <Label Text="{Binding ProjectReference}" />
         <Label Text="{Binding CustomerName}" />
      </StackLayout>
      <Label Grid.Column="1" Grid.Row="0" Text="{Binding Amount}" />
      <Grid Grid.Column="0" Grid.Row="1" Grid.ColumnSpan="2" IsVisible="{Binding IsMoreInfoAvailable}">
         <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*" />
            <ColumnDefinition Width="Auto" />
         </Grid.ColumnDefinitions>
         <Grid.GestureRecognizers>
            <TapGestureRecognizer Command="{Binding ChangeMoreInfoCommand}" />
         </Grid.GestureRecognizers>
         <Label Grid.Column="0" Text="More info" />
         <Label Grid.Column="1" Text="{Binding MoreInfoIcon}" />
      </Grid>
   </Grid>
   <StackLayout Grid.Column="1" Grid.Row="1" IsVisible="{Binding ShowMoreInfo}" VerticalOptions="Start">
      <Label Text="{Binding Address}" />
   </StackLayout>
 </Grid>

这两种方法都可以在UWP和Android上使用,但都不能在iOS上使用

命令由

组成
ShowMoreInfo = !ShowMoreInfo;
MoreInfoIcon = ShowMoreInfo ? "-" : "+";
UpdateLayout?.Invoke();

UpdateLayout操作仅在iOS上设置,并且设置为ForceUpdateSize

可以在WeTransfer

上找到源代码

编辑

当我展开ViewCell时,我希望布局看起来像这样 Correct layout

但是当我展开ViewCell时,它看起来像这样 As it looks like

仅当ViewCell第一次扩展时,才会出现此问题。

0 个答案:

没有答案