stacklayout loading center xamarin.forms absolutelayout

loading - stacklayout xamarin forms



Xamarin.Forms: ¿cómo centrar absolutamente un elemento en la página? (1)

Tengo una página de inicio de sesión usando un StackLayout para el contenido (nombre de usuario, contraseña, botón de inicio de sesión). Después de que el usuario haga clic en el botón de inicio de sesión, quiero que se establezca un bloque de "carga" en el centro absoluto de la página, además del contenido de StackLayout existente. Por alguna razón molesta, esto no es sencillo. Parece una cosa simple y común: ¿cómo se hace?


Usaste una etiqueta correcta: AbsoluteLayout .

var loadingView = new StackLayout { Padding = 6, Orientation = StackOrientation.Horizontal, BackgroundColor = Color.Gray, Children = { new ActivityIndicator { Color = Color.White, IsRunning = true, VerticalOptions = LayoutOptions.Center, WidthRequest = 20, HeightRequest = 20 }, new Label { TextColor = Color.White, Text = "Loading...", VerticalOptions = LayoutOptions.Center } } }; var layout = new AbsoluteLayout { Padding = 0, HorizontalOptions = LayoutOptions.FillAndExpand, VerticalOptions = LayoutOptions.FillAndExpand, Children = { { new BoxView {Color = Color.Green}, new Rectangle(0, 0, 1, 1), AbsoluteLayoutFlags.All }, { loadingView, new Rectangle(0.5, 0.5, -1, -1), AbsoluteLayoutFlags.PositionProportional } } };

O 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="ArtiSO.LoadingPage"> <ContentPage.Content> <AbsoluteLayout Padding="0" HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand"> <BoxView Color="Lime" AbsoluteLayout.LayoutBounds="0, 0, 1, 1" AbsoluteLayout.LayoutFlags="All" /> <StackLayout Padding="6" Orientation="Horizontal" BackgroundColor="Gray" AbsoluteLayout.LayoutBounds="0.5, 0.5, -1, -1" AbsoluteLayout.LayoutFlags="PositionProportional"> <ActivityIndicator Color="White" IsRunning="true" VerticalOptions="Center" WidthRequest="20" HeightRequest="20" /> <Label TextColor="White" Text="Loading..." VerticalOptions="Center" /> </StackLayout> </AbsoluteLayout> </ContentPage.Content> </ContentPage>

Resultado: