Partilhar via


Sombras ImageButton no Android

Este dispositivo específico da plataforma Android é usado para habilitar uma sombra projetada em um ImageButtonarquivo . Ele é consumido em XAML definindo a ImageButton.IsShadowEnabled propriedade bindable como true, juntamente com várias propriedades vinculáveis opcionais adicionais que controlam a sombra projetada:

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

Como alternativa, ele pode ser consumido do C# usando a API fluente:

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

Importante

Uma sombra projetada é desenhada como parte do ImageButton plano de fundo e o plano de fundo só é desenhado se a BackgroundColor propriedade estiver definida. Portanto, uma sombra projetada não será desenhada se a ImageButton.BackgroundColor propriedade não estiver definida.

O ImageButton.On<Android> método especifica que essa plataforma específica só será executada no Android. O ImageButton.SetIsShadowEnabled método, no Xamarin.Forms.PlatformConfiguration.AndroidSpecific namespace, é usado para controlar se uma sombra projetada está habilitada ImageButtonno . Além disso, os seguintes métodos podem ser invocados para controlar a sombra projetada:

  • SetShadowColor – define a cor da sombra. A cor padrão é Color.Default.
  • SetShadowOffset – define o deslocamento da sombra projetada. O deslocamento altera a direção em que a sombra é projetada e é especificado como um Size valor. Os Size valores da estrutura são expressos em unidades independentes do dispositivo, sendo o primeiro valor a distância à esquerda (valor negativo) ou à direita (valor positivo), e o segundo valor a distância acima (valor negativo) ou abaixo (valor positivo). O valor padrão dessa propriedade é (0.0, 0.0), o que resulta na sombra sendo projetada em torno de cada lado do ImageButton.
  • SetShadowRadius– define o raio de desfoque usado para renderizar a sombra. O valor de raio padrão é 10,0.

Observação

O estado de uma sombra projetada pode ser consultado chamando os GetIsShadowEnabledmétodos , GetShadowColorGetShadowOffset, e GetShadowRadius .

O resultado é que uma sombra projetada pode ser habilitada em um ImageButton:

ImageButton com sombra projetada