Freigeben über


VisualElement-Erhöhung unter Android

Diese plattformspezifische Android-Plattform wird verwendet, um die Rechteerweiterung oder Z-Reihenfolge visueller Elemente in Anwendungen zu steuern, die auf API 21 oder höher abzielen. Die Erhöhung eines visuellen Elements bestimmt seine Zeichnungsreihenfolge, wobei visuelle Elemente mit höheren Z-Werten visuelle Elemente mit niedrigeren Z-Werten verdeckt werden. Sie wird in XAML genutzt, indem die VisualElement.Elevation-angefügte Eigenschaft auf einen boolean-Wert festgelegt wird:

<ContentPage ...
             xmlns:android="clr-namespace:Xamarin.Forms.PlatformConfiguration.AndroidSpecific;assembly=Xamarin.Forms.Core"
             Title="Elevation">
    <StackLayout>
        <Grid>
            <Button Text="Button Beneath BoxView" />
            <BoxView Color="Red" Opacity="0.2" HeightRequest="50" />
        </Grid>        
        <Grid Margin="0,20,0,0">
            <Button Text="Button Above BoxView - Click Me" android:VisualElement.Elevation="10"/>
            <BoxView Color="Red" Opacity="0.2" HeightRequest="50" />
        </Grid>
    </StackLayout>
</ContentPage>

Alternativ kann sie mit der Fluent-API von C# genutzt werden:

using Xamarin.Forms.PlatformConfiguration;
using Xamarin.Forms.PlatformConfiguration.AndroidSpecific;
...

public class AndroidElevationPageCS : ContentPage
{
    public AndroidElevationPageCS()
    {
        ...
        var aboveButton = new Button { Text = "Button Above BoxView - Click Me" };
        aboveButton.On<Android>().SetElevation(10);

        Content = new StackLayout
        {
            Children =
            {
                new Grid
                {
                    Children =
                    {
                        new Button { Text = "Button Beneath BoxView" },
                        new BoxView { Color = Color.Red, Opacity = 0.2, HeightRequest = 50 }
                    }
                },
                new Grid
                {
                    Margin = new Thickness(0,20,0,0),
                    Children =
                    {
                        aboveButton,
                        new BoxView { Color = Color.Red, Opacity = 0.2, HeightRequest = 50 }
                    }
                }
            }
        };
    }
}

Die Button.On<Android> Methode gibt an, dass diese plattformspezifisch nur auf Android läuft. Die VisualElement.SetElevation Methode im Xamarin.Forms.PlatformConfiguration.AndroidSpecific Namespace wird verwendet, um die Erhöhung des visuellen Elements auf eine Nullwerte floatfestzulegen. Darüber hinaus kann die VisualElement.GetElevation Methode verwendet werden, um den Höhenwert eines visuellen Elements abzurufen.

Das Ergebnis ist, dass die Erhöhung visueller Elemente gesteuert werden kann, damit visuelle Elemente mit höheren Z-Werten visuelle Elemente mit niedrigeren Z-Werten verdeckt werden. Daher wird in diesem Beispiel die zweite Button über dem BoxView Wert gerendert, da sie einen höheren Höhenwert aufweist:

Screenshot der VisualElement-Erhöhung