ImageButton Drop Shadows на Android

Эта платформа Android используется для включения тени падения на платформе ImageButtonAndroid. Он используется в XAML, задав ImageButton.IsShadowEnabled привязываемое свойство true, а также ряд дополнительных необязательных привязываемых свойств, которые управляют тенью удаления:

<ContentPage ...
             xmlns:android="clr-namespace:Xamarin.Forms.PlatformConfiguration.AndroidSpecific;assembly=Xamarin.Forms.Core">
    <StackLayout Margin="20">
       <ImageButton ...
                    Source="XamarinLogo.png"
                    BackgroundColor="GhostWhite"
                    android:ImageButton.IsShadowEnabled="true"
                    android:ImageButton.ShadowColor="Gray"
                    android:ImageButton.ShadowRadius="12">
            <android:ImageButton.ShadowOffset>
                <Size>
                    <x:Arguments>
                        <x:Double>10</x:Double>
                        <x:Double>10</x:Double>
                    </x:Arguments>
                </Size>
            </android:ImageButton.ShadowOffset>
        </ImageButton>
        ...
    </StackLayout>
</ContentPage>

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

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

var imageButton = new Xamarin.Forms.ImageButton { Source = "XamarinLogo.png", BackgroundColor = Color.GhostWhite, ... };
imageButton.On<Android>()
           .SetIsShadowEnabled(true)
           .SetShadowColor(Color.Gray)
           .SetShadowOffset(new Size(10, 10))
           .SetShadowRadius(12);

Внимание

Тени перетаскивания рисуется как часть фона ImageButton , и фон рисуется только в том случае, если BackgroundColor свойство задано. Поэтому тень падения не будет вырисована, если ImageButton.BackgroundColor свойство не задано.

Метод ImageButton.On<Android> указывает, что эта платформа будет работать только в Android. Метод ImageButton.SetIsShadowEnabled в Xamarin.Forms.PlatformConfiguration.AndroidSpecific пространстве имен используется для управления включением тени падения в пространстве ImageButtonимен. Кроме того, можно вызвать следующие методы для управления тенью падения:

  • SetShadowColor — задает цвет тени падения. Цвет по умолчанию — Color.Default.
  • SetShadowOffset — задает смещение тени падения. Смещение изменяет направление отбрасывания тени и указывается в качестве Size значения. Size Значения структуры выражаются в единицах, независимых от устройства, с первым значением является расстояние слева (отрицательное значение) или справа (положительное значение), а второе — расстояние выше (отрицательное значение) или ниже (положительное значение). Значение по умолчанию этого свойства — (0.0, 0.0), что приводит к тому, что тень создается вокруг каждой ImageButtonстороны.
  • SetShadowRadius— задает радиус размытия, используемый для отрисовки тени падения. Значение радиуса по умолчанию — 10,0.

Примечание.

Состояние тени перетаскивания можно запрашивать, вызывая GetIsShadowEnabledметоды , GetShadowColorGetShadowOffsetи GetShadowRadius методы.

Результатом является то, что тени падения можно включить в ImageButton:

ImageButton с тенью