loading Xamarin.फॉर्मस-कैसे बिल्कुल पृष्ठ पर एक तत्व का केंद्र है?



center xamarin.forms (1)

मेरे पास सामग्री (उपयोगकर्ता नाम, पासवर्ड, लॉगिन बटन) के लिए एक स्टैकलेआउट का उपयोग कर एक लॉगिन पृष्ठ है। उपयोगकर्ता लॉगिन बटन पर क्लिक करने के बाद, मुझे मौजूदा स्टैकलायआउट सामग्री के शीर्ष पर पृष्ठ के पूर्ण केंद्र में "लोडिंग" ब्लॉक सेट करना है। कुछ कष्टप्रद कारणों के लिए, यह सीधा नहीं है ऐसा करने के लिए एक सरल, सामान्य बात की तरह लगता है - यह कैसे किया जाता है?


आपने सही टैग का उपयोग किया: 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
        }
    }
};

या एक्सएएमएल:

<?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>

परिणाम: