Повышение прав VisualElement в Android

Download Sample Скачайте пример

Эта платформа Android используется для управления повышением прав или порядка Z визуальных элементов в приложениях, предназначенных для API 21 или более поздней версии. Повышение высоты визуального элемента определяет порядок рисования с визуальными элементами с более высокими значениями Z, occluding визуальными элементами с более низкими значениями Z. Он используется в XAML, задав VisualElement.Elevation присоединенное свойство значением boolean :

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

Кроме того, его можно использовать из C# с помощью api fluent:

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 }
                    }
                }
            }
        };
    }
}

Метод Button.On<Android> указывает, что эта платформа будет работать только в Android. Метод VisualElement.SetElevation в Xamarin.Forms.PlatformConfiguration.AndroidSpecific пространстве имен используется для задания повышения прав визуального элемента на значение floatNULL. Кроме того, VisualElement.GetElevation метод можно использовать для получения значения повышения прав визуального элемента.

Результатом является то, что повышение высоты визуальных элементов можно контролировать таким образом, чтобы визуальные элементы с более высокими значениями Z occlude визуальных элементов с более низкими значениями Z. Таким образом, в этом примере Button второй отображается выше BoxView , так как он имеет более высокое значение повышения.

VisualElement elevation screenshot