Ich habe eine Login-Seite mit einem StackLayout für den Inhalt (Benutzername, Passwort, Login-Button). Nachdem der Benutzer auf die Anmeldeschaltfläche geklickt hat, möchte ich einen "Lade" -Block in der absoluten Mitte der Seite oberhalb des vorhandenen StackLayout-Inhalts festlegen. Aus irgendeinem ärgerlichen Grund ist das nicht einfach. Es scheint eine einfache, gemeinsame Sache zu sein - wie wird das gemacht?Xamarin.Forms - Wie zentriere ich ein Element absolut auf der Seite?
5
A
Antwort
11
Sie haben ein richtiges Tag verwendet: 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
}
}
};
oder 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>
Ergebnis:
Verwandte Themen
- 1. Wie zentriere ich ein absolut positioniertes Element?
- 2. Wie zentriere ich ein modales Fenster auf einer Seite?
- 3. Wie zentriere ich ein Hintergrundbild auf sein Elternelement?
- 4. Wie zentriere ich ein Sprite?
- 5. Xamarin.forms Ich möchte ein Bild auf dieselbe Seite hochladen
- 6. So positionieren Sie ein Element absolut von der Mitte - CSS
- 7. Ionic: Wie zentriere ich ein div?
- 8. Wie zentriere ich einen iframe?
- 9. Master Detail Seite auf der rechten Seite mit Xamarin.Forms
- 10. Wie scrollen Schaltflächen oben auf der Seite Xamarin.Forms
- 11. Wie zentriere ich meine Formularschaltfläche?
- 12. Wie zentriere ich ein Div vertikal?
- 13. Wie zentriere ich ein LinearLayout in RelativeLayout?
- 14. Wie zentriere ich ein Label auf einem Bild in iOS?
- 15. Wie zentriere ich ein Fenster auf dem Bildschirm in C#?
- 16. wie plattformspezifische Seite von xamarin.forms
- 17. Wie lade ich ein Bild in eine ImageCell auf Xamarin.Forms?
- 18. Mit Markdown, wie zentriere ich ein Bild und seine Beschriftung?
- 19. Wie zentriere ich ein Angebot, vertikal und horizontal in Latex?
- 20. xamarin.Forms nur einen Teil der Seite scrollen
- 21. Ein Element über ein absolut positioniertes Overlay bringen
- 22. Wie zentriere ich ein ImageView vertikal in seinem Elternteil?
- 23. jquery absolut positioniertes Element klicken
- 24. Wie zentriere ich automatisch ein Div in IE8 in quirksmode?
- 25. Hintergrundstil auf absolut positionierten Element in einem relativen
- 26. HTML, CSS: Wie strecke ich ein Element bis zum Rand der Seite?
- 27. Wie zentriere ich ein Div von oben nach unten?
- 28. Festlegen der Root-Seite in Xamarin.Forms
- 29. Wie zentriere ich linksbündige Elemente?
- 30. Wie zentriere ich meine Navigationselemente?
Gibt es eine Möglichkeit, es zu tun, ohne eine AbsoluteLayout die oberste Schicht zu machen? B/c jetzt, das den Hauptinhalt betrifft, den ich dort will. Wenn der Hauptinhalt innerhalb des AbsoluteLayout beispielsweise ein StackLayout ist, kann ich ihn nicht zentrieren, indem ich die VerticalOptions und HorizontalOptions auf Layout.Center setze (b/c haben diese Eigenschaften keine Auswirkungen; ich müsste Layoutgrenzen festlegen und Layout-Flags beim Hinzufügen des Stack-Layouts zum absoluten Layout). – jbyrd
Ich bin mir nicht sicher, ob ich dich richtig verstehe. Wenn Sie ein untergeordnetes Objekt in einem AbsoluteLayout zentrieren möchten, können Sie die Parameter "bounds" und "flags" angeben: https://gist.github.com/lassana/effb87970c54f2097c0f –