Espero que todos estén bien. Tengo un problema de interfaz de usuario con mi aplicación multiplataforma para xamarin.forms. Básicamente, se muestra diferente en iOS en comparación con Android.
Tengo una función en AdminPage que cuando se hace clic en el botón abre PopupView, la ventana emergente contendrá detalles sobre el usuario o el pedido, para este ejemplo estamos usando orderDetails
private void ShowUserDetails_Clicked(object Sender, EventArgs e) { Button button = (Button)Sender; string UserId = button.CommandParameter.ToString(); PopupNavigation.Instance.PushAsync(new PopupView(-1, int.Parse(UserId))); }El problema radica en la interfaz de usuario de la ventana emergente, si observa el teléfono Android a la izquierda de la imagen a continuación. Se carga como yo quiero. Mostrar etiqueta para correo electrónico | número de teléfono, seguido de una vista de lista de OrderDetails a continuación. Como puede ver, se ve bien en Android. El problema está en el ios. ¿De dónde proviene el espacio en blanco en la parte superior de PopUpView?
Si observa de cerca PopUpView en el iPhone 11, hay una barra de desplazamiento a la derecha de la ventana emergente. Comienza donde comienza el texto, y no puedo desplazarme más arriba. Es casi como si hubiera una fila adicional colocada antes que cualquier otra cosa. He mirado extensamente a través del código y no puedo resolverlo. Así que quiero eliminar el espacio en blanco, incluso probé listview.scrollTo para la vista de lista pero sin éxito ... cualquier ayuda sería genial, gracias
<?xml version="1.0" encoding="utf-8" ?> <pages:PopupPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" x:Class="BottleShop.Views.PopupView" xmlns:pages="clr-namespace:Rg.Plugins.Popup.Pages;assembly=Rg.Plugins.Popup" xmlns:converters="clr-namespace:BottleShop.ViewModels.Converters"> <StackLayout x:Name="StackSearchResultsOuter" BackgroundColor="Transparent" HorizontalOptions="Center" VerticalOptions="Center"> <StackLayout.Resources> <converters:ProductIdToProductNameConverter x:Key="converter"/> </StackLayout.Resources> <BoxView x:Name="InvisibleSpacer" BackgroundColor = "Transparent" HeightRequest="80" /> <StackLayout x:Name="StackLayoutOrders" IsVisible="{Binding SLOrders}"> <ListView BackgroundColor="White" ItemsSource="{Binding PreviousOrderDetailsForUserLV}" HasUnevenRows="True" SeparatorVisibility="None"> <ListView.Header> <Grid> <Grid.RowDefinitions> <RowDefinition Height="Auto"/> <RowDefinition Height="*"/> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition Width="30*" /> <ColumnDefinition Width="25*" /> <ColumnDefinition Width="25*" /> <ColumnDefinition Width="20*" /> </Grid.ColumnDefinitions> <Label Grid.Column="0" Grid.ColumnSpan="4" Grid.Row="0" x:Name="UserInfoLabel" HorizontalOptions="Center" Margin="10,10,0,0"/> <BoxView Grid.Row="1" Grid.ColumnSpan="4" BackgroundColor="LightGray"/> <Label Grid.Column="0" Text="Product" Grid.Row="1" HorizontalOptions="Center" Margin="0,10,0,0"/> <Label Grid.Column="1" Grid.Row="1" Text="Quantity" HorizontalOptions="Center" Margin="0,10,0,0"/> <Label Grid.Column="2" Grid.Row="1" Text="Price" HorizontalOptions="Center" Margin="0,10,0,0"/> <Label Grid.Column="3" Grid.Row="1" Text="Sub" HorizontalOptions="Center" Margin="0,10,0,0"/> <!--<BoxView Grid.Row="1" Grid.ColumnSpan="4" HeightRequest="1" BackgroundColor="LightGray"/> --> </Grid> </ListView.Header> <ListView.ItemTemplate> <DataTemplate> <ViewCell> <Grid Padding="10" RowSpacing="10" ColumnSpacing="10"> <Grid.RowDefinitions> <RowDefinition Height="Auto"/> <RowDefinition Height="*"/> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition Width="43*" /> <ColumnDefinition Width="8*" /> <ColumnDefinition Width="25*" /> <ColumnDefinition Width="24*" /> </Grid.ColumnDefinitions> <Label Grid.Column="0" Grid.Row="0" HorizontalOptions="StartAndExpand" VerticalOptions="StartAndExpand" Text="{Binding ProductId, Converter={StaticResource converter}}"/> <Label Grid.Column="1" Grid.Row="0" HorizontalOptions="CenterAndExpand" VerticalOptions="CenterAndExpand" Text="{Binding Quantity}"/> <Label Grid.Column="2" Grid.Row="0" HorizontalOptions="CenterAndExpand" VerticalOptions="CenterAndExpand" Text="{Binding PriceOfItem, StringFormat='£{0:0.00}'}"/> <Label Grid.Column="3" Grid.Row="0" HorizontalOptions="CenterAndExpand" VerticalOptions="CenterAndExpand" Text="{Binding SubtotalForThisItem, StringFormat='£{0:0.00}'}"/> </Grid> </ViewCell> </DataTemplate> </ListView.ItemTemplate> </ListView> </StackLayout> <StackLayout x:Name="StackLayoutUsers" IsVisible="{Binding SLUsers}"> <ListView x:Name="UsersListView" BackgroundColor="White" ItemsSource="{Binding AllExistingUsersLV}" HasUnevenRows="True" SeparatorVisibility="None"> <ListView.Header> <Grid> <Grid.RowDefinitions> <RowDefinition Height="*"/> <RowDefinition Height="Auto"/> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition Width="30*" /> <ColumnDefinition Width="25*" /> <ColumnDefinition Width="25*" /> <ColumnDefinition Width="20*" /> </Grid.ColumnDefinitions> <Label Grid.Column="0" Text="Address Line 1" Grid.Row="0" HorizontalOptions="Center" Margin="0,10,0,0"/> <Label Grid.Column="1" Grid.Row="0" Text="Line 2" HorizontalOptions="Center" Margin="0,10,0,0"/> <Label Grid.Column="2" Grid.Row="0" Text="Town" HorizontalOptions="Center" Margin="0,10,0,0"/> <Label Grid.Column="3" Grid.Row="0" Text="Mobile" HorizontalOptions="Center" Margin="0,10,0,0"/> <BoxView Grid.Row="1" Grid.ColumnSpan="4" HeightRequest="1" BackgroundColor="LightGray"/> </Grid> </ListView.Header> <ListView.ItemTemplate> <DataTemplate> <ViewCell> <Grid Padding="10" RowSpacing="10" ColumnSpacing="10"> <Grid.RowDefinitions> <RowDefinition Height="Auto"/> <RowDefinition Height="*"/> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition Width="43*" /> <ColumnDefinition Width="8*" /> <ColumnDefinition Width="25*" /> <ColumnDefinition Width="24*" /> </Grid.ColumnDefinitions> <Label Grid.Column="0" Grid.Row="0" HorizontalOptions="StartAndExpand" VerticalOptions="EndAndExpand" Text="{Binding AddressLine1}"/> <Label Grid.Column="1" Grid.Row="0" HorizontalOptions="StartAndExpand" VerticalOptions="EndAndExpand" Text="{Binding AddressLine2}"/> <Label Grid.Column="2" Grid.Row="0" HorizontalOptions="EndAndExpand" VerticalOptions="EndAndExpand" Text="{Binding City}"/> <Label Grid.Column="3" Grid.Row="0" HorizontalOptions="EndAndExpand" VerticalOptions="EndAndExpand" Text="{Binding MobileNumber}"/> </Grid> </ViewCell> </DataTemplate> </ListView.ItemTemplate> </ListView> </StackLayout> </StackLayout> <!-- </Grid> --> </pages:PopupPage> using BottleShop.Data; using BottleShop.Models; using Microsoft.AppCenter.Crashes; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using Xamarin.Forms.Xaml; namespace BottleShop.Views { [XamlCompilation(XamlCompilationOptions.Compile)] public partial class PopupView //: ContentView { public ObservableCollection<OrderDetailsModel> PreviousOrderDetailsForUserLV { get; set; } OrdersDatabaseController RecentOrdersController = new OrdersDatabaseController(); public ObservableCollection<UserModel> AllExistingUsersLV { get; set; } UserDatabaseController UserController = new UserDatabaseController(); public bool SLOrders { get; set; } public bool SLUsers { get; set; } public PopupView(int OrderId, int UserId) { try { InitializeComponent(); //Show Orders PopUp if (OrderId != -1) { SLOrders = true; SLUsers = false; List<OrderDetailsModel> RecentOrderDetailsList = RecentOrdersController.GetAllOrderDetailsByOrderId(OrderId); PreviousOrderDetailsForUserLV = new ObservableCollection<OrderDetailsModel>(RecentOrderDetailsList as List<OrderDetailsModel>); int startingHeightOfSL = 180; int countOfOrderDetailRecords = PreviousOrderDetailsForUserLV.Count; var tempHeightofStackSearchResults = countOfOrderDetailRecords * 40; if (countOfOrderDetailRecords > 1) { StackSearchResultsOuter.HeightRequest = startingHeightOfSL + tempHeightofStackSearchResults; } else { StackSearchResultsOuter.HeightRequest = startingHeightOfSL; } UserInfoLabel.Text = "Email: " + PreviousOrderDetailsForUserLV[0].UserName + " | " + "Mobile: " + PreviousOrderDetailsForUserLV[0].UserMobileNumber; } else //Show Users PopUp { if(UserId != -1) { var a = 1; SLOrders = false; SLUsers = true; List<UserModel> UsersList = UserController.GetUserWithId(UserId); if (UsersList != null) { AllExistingUsersLV = new ObservableCollection<UserModel>(UsersList as List<UserModel>); } StackSearchResultsOuter.HeightRequest = 180; } } BindingContext = this; } catch (Exception ex) { Crashes.TrackError(ex); } } } }